Skip to content

💡 实战经验

远程操作的保命法则

改 SSH 配置、iptables 规则、fstab 挂载之前,永远先开两个终端。一个改配置,一个留着兜底。改坏了直接用另一个终端回滚。

操作 /etc/fstab 前务必先跑 mount -a,如果报错说明你写错了——重启后系统会进 emergency mode。写 fstab 用 UUID 不用设备名(设备名可能变,UUID 不会)。

磁盘满了别慌

df -h 显示磁盘满了,但 du -sh /* 加起来远小于总容量——这说明有已删除但未释放的文件被进程占用。

bash
# 找到被占用的已删除文件
lsof +L1 | grep deleted
nginx  1234  root  5w  REG  253,1  53687091200  0 /var/log/nginx/access.log (deleted)

# 释放空间(不重启进程)
truncate -s 0 /proc/1234/fd/5

# 或者重启占用的进程
systemctl restart nginx

别用 kill -9

kill -9(SIGKILL)是核弹——进程来不及清理就地正法。大多数情况下先用 kill(SIGTERM)就够了,给进程 10 秒优雅退出。只有确认进程卡死才用 -9。

查进程用 htop 不用 top——支持鼠标、颜色、树状显示,体验好 10 倍。

日志分析三板斧

不管什么日志,90% 的分析需求这三条命令够用:

bash
# 1. 看最近的日志
tail -f /var/log/syslog

# 2. 搜关键词
grep -i "error\|fail\|refused" /var/log/syslog | tail -50

# 3. 统计出现频率
grep "error" /var/log/syslog | awk '{print $5}' | sort | uniq -c | sort -rn | head

tmpfs 是个好东西

把频繁读写的临时文件放 tmpfs(内存文件系统),速度提升百倍,还不磨损 SSD。适合日志缓冲、会话文件、编译中间文件。

bash
# 挂载 tmpfs
mount -t tmpfs -o size=512m tmpfs /tmp/app-cache

# 写入 /etc/fstab 持久化
tmpfs /tmp/app-cache tmpfs size=512m,noexec,nosuid 0 0