2023-05-19 13:52:13
在Linux系统中,查看当前运行的所有进程可通过以下工具实现,结合静态快照、动态监控及交互式操作满足不同需求:
1. 静态进程查看:ps 命令ps(Process Status)用于捕捉当前时间点的进程快照,常用组合参数如下:
ps aux显示所有用户的进程信息,包括无控制终端的后台服务。输出字段包含:USER(用户)、PID(进程ID)、%CPU(CPU占用率)、%MEM(内存占用率)、VSZ(虚拟内存大小)、RSS(常驻内存大小)、STAT(进程状态)、COMMAND(命令)。示例:
ps aux
ps -ef以完整格式显示所有进程,突出父子进程关系。输出字段包含:UID(用户ID)、PID、PPID(父进程ID)、C(CPU利用率)、TIME(CPU时间)、CMD(命令)。示例:
ps -ef对比:
ps aux 更直观展示资源占用(如CPU、内存)。
ps -ef 更适合追溯进程来源(通过PPID字段)。
top 提供动态更新的进程列表,默认按CPU使用率排序,支持交互操作:
按 P:按CPU使用率排序(默认)。
按 M:按内存使用率排序。
按 k + 输入PID:终止指定进程(默认发送SIGTERM信号)。
按 q:退出界面。
htop 是top的增强版,提供彩色界面、树状视图及鼠标操作:
树状视图(按F5切换):清晰展示进程父子关系。
多核CPU显示:默认显示每个核心的使用率。
鼠标操作:支持点击排序、过滤、终止进程。

当系统进程较多时,可通过以下工具快速定位目标进程:
ps + grep:结合管道符筛选进程名或用户。示例:查找所有nginx相关进程
ps aux | grep nginx排除grep自身:
ps aux | grep "[n]ginx" # 使用正则避免匹配到grep进程ps -u <用户名>:显示指定用户的所有进程。示例:
ps -u myuserpgrep:直接返回匹配进程的PID,适合自动化脚本。示例:
pgrep -l nginx # 显示PID和进程名pgrep nginx # 仅显示PIDpidof:返回指定进程名的PID(通常返回第一个匹配项)。示例:
pidof nginx在ps aux或top的输出中,STAT列表示进程状态,常见状态如下:
异常状态提示:
结合以下工具可进一步分析进程资源占用:
iotop:实时显示进程的磁盘读写速度(需root权限)。示例:
sudo iotopfree -h:快速查看系统内存和交换空间使用情况。示例:
free -hvmstat:提供进程、内存、I/O及CPU活动的系统概览。示例:
vmstat 1 # 每秒刷新一次根据场景选择工具组合,可高效管理Linux进程并快速定位问题。