避坑指南与小技巧
日常运维里那些「早知道就好了」的小经验,持续收录。
危险操作避坑
永远不要在不确定路径时执行 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 命令 # 是别名、函数还是可执行文件