# 实时看日志,最常用
tail -f /var/log/nginx/error.log
# 带时间戳过滤
grep "2026-02-08 10:" app.log | tail -n 100
# 统计某个 IP 出现了多少次
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
# 从上往下找第一次出现的位置
grep -n "Exception" app.log | head
awk + sort + uniq -c + sort -rn 这个组合能解决一大半"谁在刷我接口"的问题。
top -c # 按 CPU 排序,-c 显示完整命令行
free -h # 内存,重点看 available 而不是 free
df -h # 磁盘
du -sh * | sort -rh | head # 当前目录谁占了空间
iostat -x 1 # 磁盘 IO
ss -tlnp # 监听端口和对应进程
du -sh * | sort -rh | head 是查"磁盘怎么满了"的第一条命令。
find /var/log -name "*.log" -mtime +7 -delete # 删 7 天前的日志
find . -name "*.java" | xargs grep -l "TODO" # 哪些文件里有 TODO
tar -czf backup.tar.gz ./site # 打包
rsync -avz --delete ./site/ root@host:/var/www/ # 增量同步,比 scp 好用
ln -s /var/www/blog /home/lhy/blog # 软链
rsync 的 --delete 要小心:源目录里删掉的文件,目标也会被删。第一次跑建议加 --dry-run 看看会发生什么。
ps -ef | grep java
kill -9 <pid> # 先试 kill -15,不行再 -9
systemctl status nginx
systemctl reload nginx # 改配置用 reload,别 restart
journalctl -u nginx -n 100 # 看 systemd 管的服务日志
nohup java -jar app.jar > app.out 2>&1 &
kill -9 不做清理,进程持有的锁、临时文件都可能残留。先 kill -15(TERM),等几秒,实在不行再 -9。
一、危险命令先 echo 一遍。 把 rm -rf $DIR/* 先写成 echo rm -rf $DIR/*,看清楚再执行。
二、history | grep 比重敲快。 但别把密码写在命令行里——它会进 history,也会进 ps。
ctrl + r # 反向搜索历史命令
ctrl + a / e # 跳到行首 / 行尾
ctrl + u / k # 删到行首 / 行尾
!! # 重复上一条命令
sudo !!
最后一条 sudo !! 是"忘了加 sudo"的救命键。