在linux系统中,进程是程序运行的实例,日常运维、问题排查、资源管理都需要先查询进程的相关信息,系统提供了多个不同的命令来满足不同场景下的进程查询需求。

常用进程查询命令介绍
1. ps命令
ps是linux下最基础的进程查询命令,用于静态显示当前时刻的进程快照,默认只显示当前终端关联的进程,通常需要搭配参数使用来获取更完整的信息。
常用的参数组合如下:
- -e:显示系统中所有进程
- -f:显示完整格式的进程信息,包含父进程ID、启动时间等
- -u 用户名:显示指定用户的所有进程
- -p 进程ID:显示指定进程ID的进程信息
查看所有进程的完整信息示例:
# 显示所有进程的完整信息 ps -ef # 输出示例(部分) # UID PID PPID C STIME TTY TIME CMD # root 1 0 0 10:00 ? 00:00:01 /usr/lib/systemd/systemd # root 123 1 0 10:00 ? 00:00:00 /usr/sbin/sshd -D
如果要过滤特定进程,可以结合grep命令使用,比如查询ssh相关进程:
ps -ef | grep ssh
2. top命令
top命令用于动态实时显示进程的资源占用情况,默认每隔3秒刷新一次,能够直观看到进程的CPU、内存占用排名,适合排查资源占用过高的进程。
top命令的交互操作:
- 按P:按CPU使用率排序
- 按M:按内存使用率排序
- 按N:按进程ID排序
- 按q:退出top界面
启动top命令的示例:
# 直接执行top命令进入动态监控界面 top
3. pstree命令
pstree命令以树形结构展示进程之间的父子关系,能够清晰看到进程的衍生关系,适合梳理进程的启动链路。
常用参数:
- -p:显示进程的PID
- -u:显示进程所属的用户
查看所有进程的树形结构示例:
# 显示所有进程及对应的PID pstree -p
进程查询后的常见管理操作
查询到进程信息后,经常需要对进程进行管理,最常用的就是kill命令,通过进程ID来发送信号控制进程。
常见信号说明:
| 信号编号 | 信号名称 | 作用 |
|---|---|---|
| 1 | SIGHUP | 重新加载进程配置,不终止进程 |
| 9 | SIGKILL | 强制终止进程,进程无法捕获该信号 |
| 15 | SIGTERM | 默认终止信号,通知进程正常退出 |
终止指定PID进程的示例:
# 正常终止PID为123的进程 kill 123 # 强制终止PID为123的进程 kill -9 123
不同场景的命令选择建议
如果是需要查看某一时刻的进程快照,或者需要导出进程信息做后续分析,优先选择ps命令;如果需要实时监控进程的资源占用变化,排查高负载问题,优先使用top命令;如果需要梳理进程的父子衍生关系,明确进程的启动来源,使用pstree命令更合适。
另外还可以通过/proc文件系统查询进程信息,每个运行的进程在/proc目录下都有对应PID的文件夹,里面的文件记录了进程的所有状态信息,比如/proc/123/status可以查看PID为123的进程详细状态。