Linux 排查常用命令
机器变慢或者服务起不来时,按 CPU、内存、磁盘、网络的顺序看一遍,大部分问题能定位到。
CPU 和负载
uptime # 1 / 5 / 15 分钟平均负载
top # 按 P 按 CPU 排序,按 M 按内存排序
ps aux --sort=-%cpu | head
负载长期高于 CPU 核数(nproc 可以看核数)说明任务在排队。负载高但 CPU 不忙,多半是在等磁盘 IO。
内存
free -h
dmesg -T | grep -i "killed process" # 有没有进程被 OOM 杀掉
free 里要看 available 一列,buff/cache 是可以回收的,不算真被占用。
磁盘
df -h # 各分区用量
df -i # inode 用量,小文件太多时会先满
du -sh /var/log/* | sort -h
iostat -x 1 # 磁盘忙不忙,看 %util 和 await
删了大文件空间却没释放,通常是还有进程开着它:lsof | grep deleted,重启那个进程就好了。
端口和网络
ss -lntp # 哪些端口在监听、是哪个进程
ss -s # 连接数汇总
curl -v http://127.0.0.1:端口/ # 先在本机试,排除防火墙
服务日志
systemctl status 服务名
journalctl -u 服务名 -n 100 --no-pager
journalctl -u 服务名 -f # 跟着看