ps 命令在 Linux 系统里一直是最经典的进程查看工具之一。它虽然基础,但配合不同的选项和参数,几乎能满足你日常工作中所有查找进程的需求。下面梳理几种最实用的场景,都是运维和开发人员高频使用的技巧。

-
查看所有进程
直接输入ps -e或ps -A,系统就会列出当前运行的全部进程。如果你想快速了解系统整体运行状况,这是最直接的方式。ps -e或者
ps -A -
查看特定用户的进程
想查询某个用户启动了哪些进程,可以用-u参数跟上用户名。例如查看 root 的进程,执行ps -u root即可。ps -u username -
查看指定 PID 的进程
如果你已经知道进程号(PID),用-p参数直接定位,精确又高效。ps -p pid -
按进程名搜索
这是最常用的组合——ps -ef输出所有进程的详细信息,再通过管道传给grep过滤出你关心的名称。例如查找nginx进程:ps -ef | grep nginx -
查看特定终端上的进程
想知道某个终端(tty)下运行了哪些进程,用-t参数指定终端名称。比如ps -t pts/0。ps -t tty -
按进程状态过滤
进程有多种状态——运行中(R)、睡眠(S)、僵尸(Z)等。借助-eo自定义输出字段,可以方便筛选。以下示例只显示当前处于运行状态的进程:ps -eo state,pid,ppid,cmd | grep 'R'这条命令会列出所有进程的状态、PID、父进程 PID 和命令行,然后仅保留状态为 R 的行。
-
使用 grep 避开自身干扰
一个实用技巧:执行ps -ef | grep process_name时,grep本身也会出现在结果中,造成干扰。解决方法是将进程名的首字母用方括号括起来,例如搜索process_name改为[p]rocess_name。这样grep的正则匹配会忽略自身,输出结果更干净。ps -ef | grep '[p]rocess_name'
灵活组合上述选项,基本可以应对绝大多数进程查找场景。关键在于多动手实践,你会发现 ps 命令远比你想象的更强大、更顺手。
