ps命令是linux中查看进程信息的常用工具,基本用法包括:1. 输入ps查看当前终端进程;2. 使用ps -a显示所有用户进程、ps -x显示无终端进程、ps -u显示用户详细信息;3. 常用组合ps -aux查看完整进程信息;4. 通过ps -aux | grep [关键字]过滤特定进程并可用grep -v grep排除自身;5. 使用-p参数指定pid查看特定进程;6. stat列显示进程状态,如d、r、s、t、z分别代表不同运行或等待状态;7. 使用--format自定义输出字段并可通过--sort排序,也可将结果重定向保存到文件。

在Linux系统中,查看进程信息最常用的工具之一就是ps命令。它能帮助我们快速了解当前运行的进程状态、资源占用情况等关键信息。虽然看起来只是一个简单的命令,但ps的用法其实非常丰富,掌握好它对排查问题、性能调优都很有帮助。

1. 基本用法:快速查看当前终端相关的进程
如果你只是想看看当前终端下运行了哪些进程,直接输入:

ps
这会显示与当前终端有关的进程,包括PID(进程ID)、TTY(终端)、时间、命令名等基本信息。
但通常我们在实际使用中会加上一些参数来获取更详细的信息,比如:

-
ps -a:显示所有用户的进程(不包括后台挂起的) -
ps -x:显示没有控制终端的进程 -
ps -u:显示用户相关的详细信息(如CPU、内存使用)
组合起来常用的是:
ps -aux
这个命令几乎成了查看系统进程的标准操作,输出字段如下:
- USER:运行该进程的用户
- PID:进程ID
- %CPU:CPU使用率
- %MEM:内存使用率
- VSZ:虚拟内存使用量(KB)
- RSS:物理内存使用量(KB)
- TTY:关联的终端
- STAT:进程状态
- START:启动时间
- TIME:累计CPU时间
- COMMAND:启动命令
2. 查看特定进程:过滤和定位更高效
当你知道某个进程的关键字时,可以用管道配合grep进行过滤。例如查找nginx相关进程:
ps -aux | grep nginx
这样可以快速找到你关心的进程信息。但要注意,grep本身也会出现在结果中,可以通过加-v grep排除掉自己:
ps -aux | grep nginx | grep -v grep
如果你已经知道PID,可以直接通过 -p 参数指定:
ps -p 1234
还可以同时查看多个PID:
ps -p 1234,5678
3. 理解进程状态:STAT列详解
ps命令输出中的STAT列是理解进程状态的关键。常见的状态码如下:
- D:不可中断睡眠(通常是等待I/O)
- R:运行中或可运行(在就绪队列中)
- S:可中断睡眠(常见于等待事件完成)
- T:被停止(如收到SIGSTOP信号)
- Z:僵尸进程(已终止但未被父进程回收)
这些状态可以帮助判断进程是否正常工作。例如,大量D状态可能表示磁盘或网络IO异常;而Z状态则可能是程序设计上的问题导致无法正确回收子进程。
此外,状态后可能会带有附加标志:
- :高优先级进程
- N:低优先级进程
- +:前台进程组
- l:多线程进程
这些符号有时候也能帮助我们快速识别重要进程。
4. 高级用法:自定义输出格式和排序
如果你想只看某些字段,或者按自己的喜好排列输出内容,可以用--format参数来自定义:
ps -eo pid,user,%cpu,%mem,command --sort=-%cpu
上面这条命令的意思是:
-
-e:选择所有进程 -
-o:指定输出字段为pid、user、%cpu、%mem和command -
--sort=-%cpu:按CPU使用率降序排序(前面加负号表示降序)
你可以根据需要替换字段,比如加上etime(运行时间)或者start_time(启动时间)等。
如果想把输出保存到文件,也可以直接重定向:
ps -eo pid,user,%cpu,%mem > process_info.txt
基本上就这些。ps命令虽然基础,但灵活运用之后可以成为排查问题、监控系统状态的重要工具。很多高级命令(如top、htop)背后也是基于类似的数据源。熟练掌握ps,不仅能帮你快速定位问题,还能加深你对Linux进程管理机制的理解。










