在Linux系统中,查看运行的程序(进程)是系统管理和故障排查的基础操作,Linux提供了多种命令工具,通过不同的参数组合可以实现多样化的进程查看需求,满足从基础查询到深度分析的各种场景,以下将详细介绍常用命令的功能、使用方法及适用场景。

基础进程查看命令
ps命令:静态查看进程快照
ps(Process Status)是最基础的进程查看工具,用于输出当前时刻的进程静态信息,通过不同选项可查看指定范围的进程:
ps aux:查看系统中所有进程的详细信息,包括用户(USER)、进程ID(PID)、CPU占用率(%CPU)、内存占用率(%MEM)、命令(COMMAND)等字段。
示例输出:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 12800 8324 ? Ss May01 0:01 /sbin/init mysql 1234 0.1 1.5 123456 78900 ? Sl May02 0:30 /usr/sbin/mysqldps -ef:以System V格式输出所有进程,包含进程的父进程ID(PPID),适合通过管道过滤特定进程(如ps -ef | grep nginx)。
top命令:动态实时监控进程
top以全屏交互界面实时更新进程信息,默认按CPU占用率降序排列,适合监控系统资源占用情况,常用交互操作:
M:按内存占用率(%MEM)排序;C:按CPU占用率(%CPU)排序;k:终止指定PID的进程;q:退出top界面。
界面顶部显示系统整体状态(如CPU负载、内存使用量),下方为进程列表,实时刷新(默认3秒/次)。
htop命令:增强版进程监控工具
htop是top的升级版,提供更直观的彩色界面、树状进程视图(F5切换)和鼠标操作支持,适合新手使用,安装后直接运行htop,可快速定位高资源占用进程,并通过快捷键(如t查看线程,s跟踪系统调用)深入分析。
进阶进程查询工具
pgrep/pkill命令:按名称查找/终止进程
pgrep通过进程名、用户等信息查找进程PID,适合脚本自动化操作:

pgrep -f "nginx":查找命令行中包含“nginx”的进程PID;pgrep -u root:查找root用户的所有进程。
pkill与之类似,用于直接终止进程(如pkill -f nginx)。
pstree命令:查看进程树结构
pstree以树状图展示进程间的父子关系,便于理解进程依赖,例如pstree -p会显示每个进程的PID,pstree -u会显示进程所属用户。
systemctl命令:查看系统服务状态
对于systemd管理的系统,systemctl可查看运行的服务(即守护进程):
systemctl list-units --type=service --state=running:列出所有正在运行的服务;systemctl status nginx:查看nginx服务的详细状态(包括进程PID、日志等)。
ss/netstat命令:查看网络关联进程
通过网络连接反查进程,适合排查端口占用问题:
ss -tulnp:显示所有监听(l)的TCP(t)/UDP(u)端口及对应进程(p);netstat -anp | grep :80:查看80端口的连接及进程信息(netstat逐渐被ss替代,后者性能更优)。
核心命令对比与适用场景
| 命令 | 核心功能 | 常用选项 | 适用场景 |
|---|---|---|---|
| ps | 静态查看进程快照 | aux, -ef, –forest(树状) | 快速查询指定进程信息 |
| top | 动态实时监控 | M, C, k, d(刷新间隔) | 实时监控系统资源占用 |
| htop | 增强版实时监控 | F5(树状), t(线程), s(跟踪) | 新手友好,深度分析进程 |
| pgrep | 按名称/用户查找进程PID | -f(匹配完整命令), -u(用户) | 脚本自动化,批量操作 |
| pstree | 查看进程树结构 | -p(显示PID), -u(显示用户) | 分析进程依赖关系 |
| systemctl | 查看systemd服务状态 | status, list-units | 管理系统服务(如nginx、mysql) |
| ss | 查看网络连接及关联进程 | tulnp, a(所有连接) | 排查端口占用、网络连接问题 |
注意事项
- 权限问题:普通用户只能查看自己的进程,需
sudo才能查看系统所有进程(如ps aux | grep root)。 - 动态与静态:
top/htop实时刷新,适合监控;ps只显示当前快照,适合一次性查询。 - 服务与进程:系统服务(如
nginx)通过systemctl管理,实际进程可通过systemctl status查看PID。
相关问答FAQs
Q1:ps aux和ps -ef有什么区别?如何选择?
A:ps aux采用BSD格式,包含%CPU、%MEM等资源占用率字段,适合直观查看进程资源消耗;ps -ef采用System V格式,包含PPID(父进程ID)字段,适合通过管道过滤(如ps -ef | grep java),若需关注资源占用,选ps aux;若需分析进程父子关系,选ps -ef。

Q2:为什么用ps aux查看不到某些进程?
A:可能原因有两个:一是权限不足,普通用户无法查看其他用户的进程(需sudo);二是进程状态为“僵尸”(Z状态),这类进程已结束但未释放资源,ps aux可能不显示或显示异常,可通过top查看并手动终止其父进程(k命令)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/24521.html