Linux 服务器排错常用的五个命令
Linux 服务器排错常用的五个命令
生产环境中 Linux 服务器一旦异常,定位效率往往决定了业务恢复的速度。下面整理五个在排错时最常派上用场的命令,配合实例说明它们各自适用的场景。
1. top / htop – 定位资源瓶颈
服务器变慢的第一步通常是看 CPU 和内存。top 按 P 可按 CPU 使用率排序,按 M 按内存排序;RES 列反映真实物理内存占用。对于需要更直观排障的场景,htop 的彩色树形进程视图能直接看出父子进程的资源分配关系。如果发现某进程长期占满单核,可结合 top -p <pid> 持续观察。
2. netstat / ss – 排查网络连接
端口无法监听、连接堆积、TIME_WAIT 过多都可以通过 netstat -tunlp 或更轻量的 ss -tunlp 查看。排查"端口被占用"时用 ss -lp | grep :8080 即可定位持有端口的进程。建立连接过多时,ss -s 给出各状态的连接数统计,快速判断是否存在连接泄漏。
3. journalctl / dmesg – 查看系统与服务日志
systemd 管理的服 务出问题时,journalctl -u <service> -f 实时跟踪日志是最直接的方式。配合 --since today 可限定范围。内核层面的 OOM、硬件报错、驱动异常等信息在 dmesg -T 中按可读时间输出;出现 Out of memory: Killed process 时,结合 journalctl -k --grep="oom" 就能锁定被杀进程。
4. lsof – 查找文件与句柄占用
"磁盘空间已满但 df 与 ls 对不上"是典型场景,通常是大文件被删除但进程仍持有句柄。lsof | grep deleted 可以列出这些已被删除但仍打开的文件,对应进程释放后空间才会真正回收。排查端口被谁绑定时 lsof -i :443 也是一条常用路径。
5. strace – 跟踪系统调用
当前三个方向都无法定位根因时,strace -p <pid> 能实时打印目标进程发起的系统调用及其返回值。通过观察 read/write/open 的结果(如 ETIMEDOUT、EACCES、ENOENT),可以快速判断是网络超时、权限不足还是路径不存在。加上 -e trace=network 可只关注网络相关调用,减少噪音。
小结
这五个命令覆盖了资源、网络、日志、文件句柄与系统调用五个排错维度。实际使用时建议组合:先用 top 确认瓶颈类型,再用 netstat/ss 或 lsof 定位到具体进程与端口,随后用 journalctl 查服务日志,必要时以 strace 收尾,通常能在几分钟内锁定问题根因。
- 点赞
- 收藏
- 关注作者
评论(0)