跳转到内容

常用命令速查

这些命令用于查看状态和排查问题,都不会修改系统。需要先开启 SSH,见SSH 与命令行

只读命令与修改命令要分清

本页列出的都是只读命令。从网上抄来的命令在执行之前,先确认它做什么——特别是带 rmddmkfs> 的命令,它们会造成不可逆的改动。

磁盘与存储

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 几乎总能给出原因,先看它再做其他猜测。

延伸阅读

fnOS 非官方中文使用指南,与飞牛官方无隶属关系。