程序跑起来就是进程。这篇讲怎么看谁在跑、怎么杀进程、前后台切换。
ps:看谁在跑
ps aux
USER PID %CPU %MEM COMMAND
root 1 0.0 0.5 /sbin/init
chris 1234 2.1 1.2 nginx: worker
a=所有用户 x=无终端的也要 u=详细信息。PID 是进程身份证号,kill 就靠它。
ps aux | grep nginx # 只看 nginx
pstree -p # 树形看父子关系
top / htop:实时看
top
按 q 退出,P 按 CPU 排序,M 按内存排序。htop 更直观(需另装),支持鼠标点选杀进程。
kill:杀进程先礼后兵
kill 1234 # 发 TERM 信号,让进程自己收拾完退出(优雅)
kill -9 1234 # 发 KILL,强制杀(数据可能丢,不到万不得已不用)
killall nginx # 按名字杀一批
pkill -f "python app.py" # 按命令行特征杀
顺序:先 kill PID,不死再 kill -9。上来就 -9 容易丢数据、留僵尸进程。
前台后台:& / jobs / bg / fg
./long_task.sh & # 加 & 直接后台跑
jobs # 看后台任务列表
bg %1 # 把暂停的任务丢后台继续
fg %1 # 把后台任务拉回前台
Ctrl+Z 暂停前台任务,bg 让它后台继续,fg 拉回来。关终端任务就死了,想过夜用:
nohup ./long_task.sh & # 关终端也不死,输出进 nohup.out
实战
程序卡死:ps aux | grep app 找 PID → kill PID → 不死 kill -9 PID。
80 端口被占:ss -tlnp | grep 80 看谁在用 → kill 掉再启动你的服务。
VPS 变慢:top 按 P 看谁吃 CPU,陌生进程名+高 CPU,八成是挖矿木马,kill 后查登录日志。
小结
下一篇 L9:磁盘与文件系统——df/du 找谁吃了磁盘,mount 挂载,磁盘满了三板斧。