Skip to content

避坑指南与小技巧

日常运维里那些「早知道就好了」的小经验,持续收录。

专题页

危险操作避坑

永远不要在不确定路径时执行 rm -rf

rm -rf 配合变量极其危险。务必先用 echo 验证变量再删除:

bash
echo "$DIR"        # 先确认 $DIR 是你想删的目录
rm -rf "$DIR"/     # 确认无误后再执行,注意引号防止空格 / 空变量
  • curl | bash 慎用:先 curl -fsSL URL -o x.sh 下载看一眼内容再 bash x.sh
  • 改全局配置先备份cp file file.bak,给自己留后路。
  • > 会清空文件:想追加请用 >>

效率小技巧

bash
cd -                 # 快速返回上一个目录
!!                   # 重复上一条命令;sudo !! 用 sudo 重跑刚才那条
!$                   # 引用上条命令的最后一个参数
Ctrl + R             # 反向搜索历史命令
Ctrl + L             # 清屏(等价 clear)
ls -lh               # 人类可读的文件大小
df -h && du -sh *    # 看磁盘整体与当前目录占用

排错速记

磁盘满了,但找不到大文件

bash
# 按目录逐层定位占用大户
du -h --max-depth=1 / 2>/dev/null | sort -hr | head
# 常见元凶:日志、Docker 数据、缓存
journalctl --disk-usage          # systemd 日志占用
sudo journalctl --vacuum-size=200M   # 收缩日志到 200M
docker system df && docker system prune -a   # 清理 Docker 垃圾(慎用 -a)

删了文件磁盘却没释放?

进程还占着已删文件的句柄。用 lsof | grep deleted 找到进程并重启它即可释放。

端口被占用

bash
sudo ss -tulpn | grep :80    # 查看谁在监听 80 端口(ss 已取代 netstat)
sudo lsof -i :80             # 另一种查法,能看到进程

systemd 服务起不来

bash
systemctl status 服务名         # 看状态与最近几行报错
journalctl -u 服务名 -e         # 看该服务的完整日志(-e 跳到末尾)
journalctl -u 服务名 -f         # 实时跟踪日志
sudo systemctl daemon-reload    # 改了 .service 文件后必须执行

命令找不到 / PATH 问题

bash
which 命令       # 命令在哪
echo $PATH       # 当前 PATH
type 命令        # 是别名、函数还是可执行文件

基于 MIT 许可发布 · 内容仅供学习交流,自建有风险,跑路需谨慎