linux常用命令
- 端口相关
- 文件目录管理
- 文件查看
- 文件属性
- 日志查看
- 系统命令
- 防火墙相关命令
端口相关
netstat -ntpl # 查询linux系统tcp端口情况
fuser -n tcp 80 # 查询80端口是否被占用
lsof -i:<port>
lsof -i:9099 | grep java
lsof -i :9099 | awk '{print $2, $1, $3}'
文件目录管理
# 拷贝文件
cp [option] <file> <newFile>
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
# rm移除文件,不能直接删除目录
rm [option] <file>
rm -i file.txt #互动是否删除文件
-f 忽略不存在的文件
-r 递归删除目录
-i 互动,询问是否删除
# rm -fr慎用
# 移动文件 移动文件或者目录,或者重命名文件夹或者文件名,
mv [option] <file> <newFile>
mv file.txt newfile.txt #修改文件名
mv file.txt ../ # 移动当前文件至上一级目录
-f 强制移动直接覆盖
-u 只替换已经更新的文件
-i 目标文件存在会询问是否覆盖
#新建文件名
touch <filename>
# 创建目录
mkdir [option] <dirName>
-p创建多级目录
# 删除空的目录,不能删除文件,不能删除不为空的目录
rmdir [option] <dirName>
-p 删除空的层级目录
文件查看
# 从最后一行查看(倒叙查询文件)
tac
tac <log> | grep -m 20 '关键字' # 逆向查询匹配关键字的20行记录
tac <log> | head -n 10 # 倒叙查询10行记录
# 将文本带行号输出到控制
nl <log>
# 一页一页显示,到最后会自动退出
more <log>
空格:表示向下翻一页
enter:向下翻一行
f:退出文档
q:退出文档
b:往回翻页
# less [option] <log>
/字符串:向下搜索
?字符串:向上搜索
空格:向下翻页
q:退出文档
-N 显示行号
# 默认显示文件前10行
head [option] <log>
-n 数字 显示前几行
# 实时显示文件,默认显示最新的10行
tail [option] <log>
-n 数字
# 编辑文件
vim <log>
先进入的是命令模式,按i或者a或者w可以进入输入模式,按ese可以退出编辑模式到命令模式,命令模式输入:进入底线命令模式,
按w保存文件,按q是退出vi命令。这底线命令模式好像是命令前面加上一个英文冒号。
# 追加文本玩filename
echo "字符串" >> filename #cat filename 会显示字符串
文件属性
-rwxrwxr-x 1 gcc gcc 4879 Dec 11 13:01 application.yml
第一组字符(1个) | 字符含义 |
---|---|
l | 软连接文件,相当于windows系统的快捷方式 |
- | 表示文件 |
d | 表示目录 |
c | 字符设备文件,一次传输一个字节的设备被称为字符设备。例如键盘,鼠标 |
b | 表示位装置文件里面的可供存储的接口设备 |
r 表示读权限,w 表示写权限,x 表示执行权限,- 表示无权限。
第二组字符(9个) | 字符含义 |
---|---|
rwx | 表示所有者(owner)对文件的权限(读、写和执行权限 |
rwx | 示文件所属组(group)的权限 |
r-x | 表示其他用户的权限 |
1
:表示文件的硬链接数。
g**
: 表示文件的所有者(owner)
g**
: 表示文件所属的用户组(group)
4879
: 表示文件的大小(以字节为单位)
Dec 11 13:01
: 表示文件的最后修改时间
application.yml
: 文件名
日志查看
tac <log> | grep -m 20 '关键字' # 将文件逆向显示,然后从grep中找到包含关键字的行,限制为20
tac http-access.log | grep -m 20 '/modify/v2/modUser'
#grep 命令的 -B(前置行)和 -A(后置行)选项允许您显示匹配行的前面和后面的指定行数
grep -B 10 -A 10 "error" your_log_file.log
# 逆向显示文件内容,从最后一行开始。然后您可以将结果再通过 grep 筛选
tail -r your_log_file.log | grep "error"
# 正则查询日志,
grep -E '(14|15):.{2}:.{2}.*.*task-41.*' log
grep -E '15:[0-5][0-9]:[0-5][0-9].*task-41.*'
系统命令
# 查询linux主机名
hostname
# 在系统的数据库中查找主机名与IP地址的映射关系
getent hosts
# 配置文件
/etc/nsswitch.conf
# hosts: files dns myhostname
# 会从/etc/hosts中查询域名和ip的映射关系
# 查询ip 映射的主机名
cat /etc/hosts
# 切换用户
su <username>
# 停止进程
kill -9 <pid>
# 修改主机名
sudo hostnamectl set-hostname <newhostname>
防火墙相关命令
service firewalld start # 开启
service firewalld restart # 重启
service firewalld stop # 关闭
systemctl restart firewalld.service #重启防火墙
systemctl status firewalld # 查看firewall服务状态
firewall-cmd --list-all-zones #列出所有区域信息
firewall-cmd --get-active-zones #查看当前的活动区域信息
firewall-cmd --set-default-zone=public #设置public区域为默认区域
firewall-cmd --get-default-zone #查看默认区域信息
firewall-cmd --version #查看版本
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #重启防火墙、更新防火墙规则设置
firewall-cmd --list-services #查看所有允许的服务
firewall-cmd --get-services #获取所有支持的服务
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
firewall-cmd --query-port=8080/tcp #查看8080端口是否开放
firewall-cmd --zone=public --query-service=ssh #查询某区域是否允许ssh协议的流量通过 yes
firewall-cmd --zone=public --query-service=https #查询某区域是否允许https协议的流量通过 no
firewall-cmd --zone=public --add-port=3306/tcp --permanent #访问3306端口的浏览策略设置允许,并且永久生效
firewall-cmd --zone=public --add-port=5000-5500/tcp --permanent #开启一段
firewall-cmd --zone=public --remove-port=3306/tcp --permanent #关闭防火墙端口3306
firewall-cmd --zone=public --remove-port=5000-5500/tcp --permanent #关闭防火墙端口5000-5500一段端口
#命令含义
--zone #作用域
--add -port-80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效