最近帮朋友排查 VPS / 小服务问题时,发现很多时候不是问题复杂,而是第一眼不知道该看哪里。整理一份我自己常用的排查命令,新手可以先收藏,真出事时按顺序扫一遍。
1. 先看机器是不是快满了
# 磁盘剩余空间
df -h
# 当前目录下谁占空间最多
du -sh * | sort -h
# 内存使用情况
free -h
磁盘满了会引发很多奇怪问题:日志写不进去、数据库启动失败、构建失败、服务莫名 500。
2. 看进程和资源占用
# 实时看 CPU / 内存
top
# 按内存占用排序
ps aux --sort=-%mem | head
# 按 CPU 占用排序
ps aux --sort=-%cpu | head
如果是小机器,先看是不是某个进程把内存吃完了。很多服务本身没坏,只是被 OOM 或卡住了。
3. 看端口有没有监听
# 查看监听端口和对应进程
ss -tulpn
# 只看某个端口,例如 80
ss -tulpn | grep ':80'
访问不了服务时,我一般先确认三件事:服务是否启动、端口是否监听、防火墙或安全组是否放行。
4. 看 systemd 服务日志
# 看服务状态
systemctl status nginx
# 看最近 100 行日志
journalctl -u nginx -n 100 --no-pager
# 实时跟日志
journalctl -u nginx -f
把 nginx 换成自己的服务名即可。大多数启动失败、配置错误、权限错误都能从这里看到线索。
5. 网络连通性
# 测基础连通
ping 1.1.1.1
# 看 HTTP 响应头
curl -I https://example.com
# 看 DNS 解析
nslookup example.com
如果 IP 能 ping 通但域名不行,优先怀疑 DNS;如果本机 curl 正常但外部访问不了,优先查防火墙、安全组、反代配置。
6. 登录和安全简单检查
# 最近登录记录
last
# 登录失败记录,部分系统可能没有权限或路径不同
lastb
# Ubuntu/Debian 常见 SSH 日志
journalctl -u ssh -n 100 --no-pager
公网机器建议关闭密码登录、改用密钥、限制 root 直登,再配合 fail2ban 或云厂商安全组做基础防护。
我自己的排查顺序
df -h看磁盘是不是满了。free -h和top看资源是不是打满。systemctl status看服务是否真的在跑。journalctl -u 服务名 -n 100看最近错误。ss -tulpn看端口是否监听。curl -I从本机和外部各测一次。
这套不高级,但够实用。很多问题先按这个流程走一遍,基本能把范围缩到服务、网络、配置、资源这几类里。
佬友们如果有更顺手的排查命令,也欢迎补充,我也想抄作业。
2 个帖子 - 2 位参与者