Linux 常用命令
详细可参考 Linux命令大全
查看所有的服务项目
# systemctl list-unit-files
- 将结果写入文件,以方便查看
# systemctl list-unit-files >list.txt
查看所有的开机自启动
# systemctl list-unit-files |grep enabled
- 将结果写入文件,以方便查看
# systemctl list-unit-files |grep enabled >list.txt
scp 命令
# scp -r Foldername/Filename user@IP:Path
- 例子,将本机的 test.txt 复制到 192.168.10.15 机子的 /usr/local目录下
# scp -r test.txt root@192.168.10.15:/usr/local
- 例子,将本机的 test 文件夹 复制到 192.168.10.15 机子的 /usr/local目录下
# scp -r test root@192.168.10.15:/usr/local
- 注机子之间要能相互 Ping 通,命令才有效
grep 命令
# grep -r '要查找的文件的内容' 路径
# 例:
# grep -r '2020-08-20' /usr/local/tomcat/logs/catalina.out # 查 catalina.out 文件包含 2020-08-20 的行,并显示
# grep -r '2020-08-20' /usr/local/tomcat/logs/* # 查该目录下所有文件包含 2020-08-20 的行,并显示
find 命令
# find / -name filename
# 例:
# find / -name test.txt # 根目录查 test.txt 文件所在的具体路径
# find /usr/local -name test.txt # /usr/local 目录下查 test.txt 文件所在的具体路径
解压/压缩
# 对于 zip 文件
# unzip test.zip # 解压 test.zip 到当前目录下
# unzip test.zip -d /usr/local # 解压 test.zip 到 /usr/local 目录下
# tar -zxvf test.tar.gz # 解压 test.tar.gz 到当前目录下
# tar -zxvf test.tar.gz -C /ust/local # 解压 test.tar.gz 到 /usr/local 目录下
# tar -zcvf test.tar.gz test/ # 将 test 压缩至 test.tar.gz
# tar -zcvf test.tar.gz test1/ test1/ test3/ test.txt # 将多个目录及文件压缩至 test.tar.gz
防火墙启动后,开放端口
- 例:
# 开机启动防火墙
# systemctl enable firewalld
# 开启防火墙
# systemctl start firewalld
# 禁止防火墙开机启动
# systemctl disable firewalld
# 停止防火墙
# systemctl stop firewalld
# 开放http端口
# firewall-cmd --zone=public --add-port=80/tcp --permanent
# 开放https端口
# firewall-cmd --zone=public --add-port=443/tcp --permanent
# 开放MySQL端口
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 立即生效
# firewall-cmd --reload
# 查看已开放的端口号
# firewall-cmd --list-ports
# 关闭端口号,关闭端口号需要重启防火墙
# firewall-cmd --zone=public --remove-port=8888/tcp --permanent
查询当前目录内超过200M大小的文件
# cd /
# find . -type f -size +200M -print0 | xargs -0 du -sh
计算 md5 值
# md5sum filename
查询端口占用情况
方式一:lsof
lsof(list open files)是一个列出当前系统打开文件的工具。
- 安装
lsof
# yum install -y lsof
lsof 查看端口占用语法格式:
lsof -i:端口号
- 实例
查看服务器 80 端口的占用情况:
# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 30596 root 6u IPv4 56534525 0t0 TCP *:http (LISTEN)
nginx 30596 root 7u IPv6 56534526 0t0 TCP *:http (LISTEN)
nginx 30597 nginx 6u IPv4 56534525 0t0 TCP *:http (LISTEN)
nginx 30597 nginx 7u IPv6 56534526 0t0 TCP *:http (LISTEN)
nginx 30598 nginx 6u IPv4 56534525 0t0 TCP *:http (LISTEN)
nginx 30598 nginx 7u IPv6 56534526 0t0 TCP *:http (LISTEN)
- lsof 输出各列信息的意义如下:
COMMAND: 进程的名称
PID: 进程标识符
USER: 进程所有者
FPD: 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE: 文件类型,如DIR、REG等
DEVICE: 指定磁盘的名称
SIZE: 文件的大小
NODE: 索引节点(文件在磁盘上的标识)
NAME: 打开文件的确切名称
- 更多 lsof 的命令如下:
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
方式二:netstat
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
- -t (tcp) 仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化为数字
- -l 仅列出在Listen(监听)的服务状态
- -p 显示建立相关链接的程序名
例如查看 80 端口的情况,使用以下命令:
# netstat -tunlp | grep 80
tcp 0 0 0.0.0.0:2080 0.0.0.0:* LISTEN 21760/docker-proxy
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN 28046/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30596/nginx: master
tcp6 0 0 :::8000 :::* LISTEN 31842/java
tcp6 0 0 :::2080 :::* LISTEN 21765/docker-proxy
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 20788/java
tcp6 0 0 127.0.0.1:8006 :::* LISTEN 31842/java
tcp6 0 0 :::50022 :::* LISTEN 28046/sshd
tcp6 0 0 :::80 :::* LISTEN 30596/nginx: master
- netstat 更多命令:
netstat -ntlp //查看当前所有tcp端口
netstat -ntulp | grep 80 //查看所有80端口使用情况
netstat -ntulp | grep 3306 //查看所有3306端口使用情况
kill
在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令:
kill -9 PID
如上实例,我们看到 80 端口对应的 PID 为 28046,使用以下命令杀死进程:
kill -9 28046
文件比较同步 - 增量更新
- rsync 是一个常用的 Linux 应用程序,用于文件同步。
- 第一次全量复制,之后则增量更新,只同步有修改的
- 安装 rsync
# yum install -y rsync
用法:
# rsync -avz --progress /home/dir/ root@192.168.10.15:/home/dir/
统计文件个数
- 统计某路径下文件的个数
# ls -l |grep "^-"|wc -l
- 统计某路径下文件夹的个数
# ls -l |grep "^d"|wc -l
- 统计文件夹下文件的个数,包括子文件夹里的
# ls -lR | grep "^-"|wc -l
评论
0 评论