Linux 进程管理入门:从 ps 到 kill 的日常排查

举报
yd_69240880 发表于 2026/11/09 06:06:16 2026/11/09
【摘要】 服务器变慢、端口被占、某个服务起不来,十有八九要先看进程。Linux 的进程管理命令不多,ps、top、kill 这几个组合起来,就能覆盖日常排查的大部分场景。 先看一眼:ps 找出进程最常用的写法是 ps aux,列出系统里所有进程:ps aux | head -20输出里最值得看的几列:USER 是谁起的、%CPU 和 %MEM 占了多少资源、COMMAND 是具体命令。只关心某个服务时...

服务器变慢、端口被占、某个服务起不来,十有八九要先看进程。Linux 的进程管理命令不多,ps、top、kill 这几个组合起来,就能覆盖日常排查的大部分场景。

先看一眼:ps 找出进程

最常用的写法是 ps aux,列出系统里所有进程:

ps aux | head -20

输出里最值得看的几列:USER 是谁起的、%CPU 和 %MEM 占了多少资源、COMMAND 是具体命令。只关心某个服务时,用 grep 过滤:

ps aux | grep nginx

注意 grep 自身也会出现在结果里,后面多一行 grep nginx 是正常的,排查时忽略它就行。想按 CPU 或内存排序,换一种写法:

ps aux --sort=-%cpu | head -10   # CPU 占用前 10
ps aux --sort=-%mem | head -10   # 内存占用前 10

只想看某个用户的进程,加 -u:ps -u www-data。想看进程之间的父子关系,用 ps -ef --forest,树状结构一眼看出谁是谁拉起来的。

实时看:top 与 htop

ps 是快照,想看动态变化用 top:

top

默认每 3 秒刷新一次,按 P 按 CPU 排序,按 M 按内存排序,按 q 退出。top 里还能直接按 k 杀进程,不过新手建议先在 ps 里确认好 PID 再动手。

如果机器上装了 htop,体验更好:支持方向键选择、F9 杀进程、鼠标点选,颜色区分也更清楚。没装的话 sudo apt install htop 即可。

找到 PID:pgrep 更直接

很多时候我们只想要进程号,比如写脚本、查监听端口。pgrep 就是干这个的:

pgrep nginx        # 输出所有 nginx 的 PID,一行一个
pgrep -f "python app.py"   # 按完整命令行匹配

配合 xargs 还能批量处理。反过来,已知 PID 想知道它是什么进程,用 ps -p <PID> -o pid,cmd。

停掉进程:kill 先温柔后强硬

kill 发的是信号,默认 SIGTERM(15),让进程自己收尾退出:

kill 1234          # 温柔地请 PID 1234 退出

等几秒还没退,再升级到 SIGKILL(9),由内核强制结束,不给收尾机会:

kill -9 1234       # 强制结束

顺序不能反:上来就 kill -9 可能丢数据、留脏文件。生产环境尤其要先 TERM、确认无效再 KILL。

按名字杀进程用 pkill:

pkill -f "python app.py"

pkill 匹配的是命令名或完整命令行,写错匹配串可能误杀别的进程。用之前先用 pgrep -f 看一眼会命中哪些 PID,确认无误再执行。

僵尸进程与孤儿进程

ps aux 里 STAT 列出现 Z,就是僵尸进程:进程已经结束,但父进程还没回收它的退出状态。僵尸本身不占内存(只占一个进程表项),少量不用管;大量出现说明父进程有问题,修父进程才是正解,kill 僵尸本身是杀不掉的。

孤儿进程则相反:父进程先退了,子进程被 init(PID 1)接管继续跑。服务启动脚本写得不规范时容易留下孤儿,重启服务后旧进程还在占端口,表现就是"新服务起不来"。这时用 ps -ef --forest 找到它,确认无用后再 kill。

一个排查流程

端口被占、服务起不来,按这个顺序走基本不会绕路:

ss -tlnp | grep 8080      # 先看端口被谁占着,拿到 PID
ps -p <PID> -o pid,user,cmd   # 确认这个进程是谁、干什么的
kill <PID>                  # 温柔停掉;不行再 kill -9

先确认、再动手,是进程管理唯一的铁律。ps 看清、top 看动、kill 分轻重,这三步熟练了,服务器上大部分"起不来、跑不动"的问题都能在几分钟内定位。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。