💡 实战经验
远程操作的保命法则
改 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 | headtmpfs 是个好东西
把频繁读写的临时文件放 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