外观
常用命令速查
这些命令用于查看状态和排查问题,都不会修改系统。需要先开启 SSH,见SSH 与命令行。
只读命令与修改命令要分清
本页列出的都是只读命令。从网上抄来的命令在执行之前,先确认它做什么——特别是带 rm、dd、mkfs、> 的命令,它们会造成不可逆的改动。
磁盘与存储
sh
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL # 块设备树:容量、类型、挂载点、型号
df -h # 各挂载点已用与可用容量
du -sh /path/to/dir # 某个目录占用多少空间
du -h --max-depth=1 /path | sort -h # 找出目录里最占地方的子目录
smartctl -a /dev/sda # 某块盘的完整 SMART 信息
smartctl -t short /dev/sda # 发起一次短检测-h 表示以人类可读单位显示;du -s 只输出汇总值;sort -h 按可读容量排序。
内存与进程
sh
free -h # 内存与交换分区
uptime # 运行时长与 1/5/15 分钟平均负载
top # 实时进程占用,按 q 退出
ps aux --sort=-%mem | head # 按内存占用排序的前几个进程平均负载的参考值:数值持续高于 CPU 核心数,说明系统在排队。
网络
sh
ip a # 网卡与 IP 地址
ip r # 路由表,确认默认网关
ss -tlnp # 正在监听的 TCP 端口及进程
ping -c 4 192.168.1.1 # 测试到网关的连通性,-c 4 表示发 4 个包
dig example.com # 测试 DNS 解析(没有 dig 时用 nslookup)
curl -I https://example.com # 只取 HTTP 响应头,测试服务可达性排查顺序建议:先 ip a 确认有地址,再 ping 网关,再 ping 外网 IP,最后测 DNS。能 ping 通 IP 但解析失败,就是 DNS 问题。
日志
sh
journalctl -p err -b # 本次开机以来的错误日志
journalctl -u 服务名 -n 100 # 某个服务最近 100 行日志
journalctl -f # 实时跟踪新日志,Ctrl+C 退出
dmesg -T | tail -50 # 内核消息,-T 显示可读时间排查磁盘掉线时,dmesg -T | grep -i 'ata\|i/o error' 通常能直接找到线索。
容器
sh
docker ps -a # 所有容器及状态
docker logs -n 100 容器名 # 最近 100 行日志
docker logs -f 容器名 # 实时跟踪
docker stats # 各容器的实时资源占用
docker inspect 容器名 # 完整配置,含挂载和网络
docker compose -f xx.yml config # 校验 compose 文件并展开最终配置容器起不来时,docker logs 几乎总能给出原因,先看它再做其他猜测。