深色模式
进程管理 ps/top/kill
摘要:服务卡了、端口被占、CPU 飙高,第一步都是"看清是哪个进程"。本文讲 ps/top/htop 与 kill 的实操。
一、查看进程
bash
ps aux # 所有进程快照(最常用)
ps aux | grep nginx # 过滤某服务
top # 实时按资源排序(P 按 CPU,M 按内存)
htop # 更友好的交互界面(需安装)1
2
3
4
2
3
4
二、找到占用端口的进程
bash
ss -lntp | grep :80 # 谁在监听 80
# 或
sudo lsof -i :80 # 占用 80 端口的进程1
2
3
2
3
三、终止进程
bash
kill 12345 # 发 SIGTERM,请进程优雅退出
kill -9 12345 # SIGKILL,强制(最后手段,可能丢数据)
pkill -f "python app.py" # 按名字批量杀1
2
3
2
3
危险
kill -9 不给进程清理机会,数据库、写入中的进程强行杀可能损坏数据。先 kill(默认 15)等几秒,不行再 -9。
四、后台运行长任务
bash
nohup python3 app.py > app.log 2>&1 &
jobs # 查看后台任务
disown # 退出终端也不被杀1
2
3
2
3
验证
- [ ]
ps aux | grep能过滤出目标进程 - [ ]
ss -lntp | grep :80能定位监听进程 - [ ] 理解
kill与kill -9的区别
常见坑
- 进程杀不掉:可能是僵尸进程(父进程没回收)或 D 状态(不可中断 IO),查父进程或等 IO。
- kill 没效果:默认 SIGTERM 可被捕获忽略,确认进程真的收到。
- 后台任务随终端关闭:没用
nohup/disown会被 SIGHUP 杀掉。