在Linux和Unix-like系统中,查看进程是系统管理和故障排查的基础操作,掌握相关命令能够帮助用户高效监控进程状态、资源占用及父子关系,以下是常用的查看进程命令及其详细用法,涵盖基础信息展示、高级筛选及实时监控等多个维度。

基础查看命令
ps命令:静态快照查看
ps是最基础的进程查看工具,默认显示当前终端关联的进程,常用选项组合如下:
ps -ef:以完整格式显示所有进程,包含UID、PID、PPID、C(CPU占用率)、STIME(启动时间)、TTY(终端)、TIME(CPU累计时间)、CMD(命令)等列,适合全局查看。ps aux:BSD格式输出,包含USER(用户)、%CPU(CPU占比)、%MEM(内存占比)、VSZ(虚拟内存大小)、RSS(常驻内存大小)、STAT(进程状态)等字段,其中STAT状态码如S(休眠)、R(运行)、Z(僵死)等需重点关注。
top命令:动态实时监控
top以全屏交互界面实时刷新进程列表,默认按CPU占用率排序,核心功能包括:
- 按
M键按内存占用排序,按P键切回CPU排序,按k键终止指定进程(需输入PID)。 - 显示系统整体信息:顶部为任务统计(总进程数、运行/休眠/僵死进程数)、CPU及内存使用率(含交换分区),下方为进程详细列表。
htop命令:增强版top
htop是top的升级版,支持彩色显示、树形进程结构(F5切换)、鼠标操作及垂直/水平滚动,更适合复杂场景,通过F2可自定义列显示,如添加I/O读写、线程数等指标。
进阶查看命令
pgrep与pidof:精准查找PID
pgrep [选项] 进程名:根据进程名、用户、终端等条件筛选PID,如pgrep -u root sshd查找root用户的sshd进程PID。pidof 进程名:直接返回指定进程名的PID列表,如pidof nginx。
pstree:进程树可视化
pstree以树形结构展示进程的父子关系,-p选项显示PID,-u显示用户,便于分析进程启动链路,例如pstree -p可清晰看到init/systemd作为根进程的层级关系。

lsof:打开文件关联进程
lsof [选项] [文件/目录]用于查看指定文件被哪些进程打开,或查看进程打开的所有文件,常用场景:
lsof -i :80:查看占用80端口的进程。lsof -p 1234:查看PID为1234的进程打开的所有文件(包括网络连接)。
资源占用与监控
glances:综合监控工具
glances以仪表盘形式整合CPU、内存、磁盘、网络及进程信息,支持-b(网卡流量)、-d(磁盘I/O)等选项,适合服务器巡检。
vmstat与iostat:系统资源统计
vmstat 1:每秒刷新一次,显示进程(r/b)、内存(swap/free)、CPU(us/sy/id)等统计信息,适合排查CPU瓶颈。iostat -xz 1:监控磁盘I/O性能,包括%util(磁盘利用率)、await(平均等待时间)等指标。
常见进程状态说明
| 状态码 | 含义 | 示例场景 |
|---|---|---|
| R | 运行中 | 正在CPU上执行或就绪 |
| S | 休眠(可中断) | 等待事件或I/O完成 |
| D | 不可中断休眠 | 等待I/O操作(如磁盘读写) |
| Z | 僵死 | 进程已终止但父进程未回收 |
| T | 停止 | 被信号(如SIGSTOP)暂停 |
相关问答FAQs
Q1: 如何查看某个进程的启动时间?
A: 使用ps -eo pid,etime,cmd可查看进程的运行时长(etime),但若需精确启动时间,可通过ps -p PID -o lstart获取,或结合stat /proc/PID查看进程目录的创建时间。
Q2: 如何找出占用内存最高的前5个进程?
A: 执行ps --sort=-%mem -eo pid,ppid,cmd,%mem,%cpu --no-headers | head -n 5,其中--sort=-%mem按内存占用降序排列,-eo自定义输出列,head -n 5取前5行,或使用top后按M键排序,手动记录前5个进程。

