Linux查看进程:精准定位异常
linux查看进程
在 Linux 系统中,进程是程序运行后的实例。无论是排查服务异常、定位 CPU 占用过高,还是查看某个程序是否正在运行,掌握“查看进程”的方法都非常重要。Linux 提供了很多命令来查看进程信息,下面介绍常用且实用的方式。
一、使用 ps 查看进程
ps 是 Linux 中最基础的进程查看命令,常用于查看当前系统中的进程快照。
查看所有进程
ps aux
常用字段含义:
| 字段 | 含义 |
|---|---|
| USER | 进程所属用户 |
| PID | 进程 ID |
| %CPU | CPU 占用率 |
| %MEM | 内存占用率 |
| VSZ | 虚拟内存大小 |
| RSS | 物理内存大小 |
| STAT | 进程状态 |
| COMMAND | 启动进程的命令 |
按进程名查找
ps aux | grep nginx
例如想查看 MySQL 进程:
ps aux | grep mysql
为了避免把 grep 自身也显示出来,可以这样写:
ps aux | grep [n]ginx
二、使用 top 实时查看进程
top 可以动态查看系统进程和资源占用情况,适合排查 CPU、内存占用异常的问题。
top
进入 top 后,常用操作包括:
| 按键 | 功能 |
|---|---|
P |
按 CPU 使用率排序 |
M |
按内存使用率排序 |
N |
按 PID 排序 |
q |
退出 |
如果只想查看某个用户的进程,可以使用:
top -u root
三、使用 htop 更直观地查看进程
htop 是 top 的增强工具,界面更友好,支持鼠标操作、颜色显示和交互式管理进程。
htop
如果系统没有安装,可以根据发行版安装:
apt install htop
或:
yum install htop
在 htop 中,可以看到 CPU、内存、Swap 的实时使用情况,也可以快速选择进程并结束进程。
四、使用 pgrep 快速查找进程 PID
如果只需要查找某个进程 ID,可以使用 pgrep。
pgrep nginx
查看更详细信息:
pgrep -a nginx
示例输出:
1234 nginx: master process /usr/sbin/nginx
1235 nginx: worker process
pgrep 比 ps | grep 更简洁,尤其适合脚本中使用。
五、使用 pidof 查看程序进程
pidof 可以根据程序名查看正在运行的进程 PID。
pidof sshd
如果程序正在运行,会返回对应的 PID;如果没有运行,则不会返回结果。
六、使用 pstree 查看进程树
有些进程之间存在父子关系,例如服务主进程会派生多个子进程。使用 pstree 可以更清晰地查看进程层级。
pstree
查看某个进程的关系树:
pstree -p 1234
也可以查看指定用户的进程树:
pstree -p root
七、查看进程的详细信息
每个进程在 /proc 目录下都有对应信息,目录名就是 PID。
例如查看 PID 为 1234 的进程:
ls /proc/1234
查看进程启动命令:
cat /proc/1234/cmdline
查看进程环境变量:
cat /proc/1234/environ
查看进程打开的文件:
ls -l /proc/1234/fd
八、查看进程打开的文件和网络连接
如果想知道某个进程打开了哪些文件,可以使用:
lsof -p 1234
查看某个程序打开的文件:
lsof -c nginx
查看端口对应的进程:
ss -lntp
或:
netstat -tunlp
例如查看 80 端口被哪个进程占用:
ss -lntp | grep :80
九、结束异常进程
查看进程后,如果发现异常进程,可以使用 kill 结束它。
kill 1234
如果进程无法正常退出,可以强制结束:
kill -9 1234
也可以根据进程名结束进程:
pkill nginx
或:
killall nginx
注意:结束进程前建议确认 PID 和进程用途,避免误杀系统关键服务。
十、常用查看进程命令汇总
| 命令 | 用途 |
|---|---|
ps aux |
查看所有进程 |
top |
实时查看进程和资源占用 |
htop |
增强版实时进程查看工具 |
pgrep |
根据名称查找 PID |
pidof |
查看程序 PID |
pstree |
查看进程树 |
lsof |
查看进程打开的文件 |
ss -lntp |
查看端口和进程关系 |
kill |
结束指定进程 |
总结
Linux 查看进程的方法很多,日常最常用的是 ps、top、pgrep 和 htop。如果只是查看进程快照,可以使用 ps aux;如果需要实时监控资源占用,可以使用 top 或 htop;如果只想快速查找某个程序的 PID,可以使用 pgrep 或 pidof。掌握这些命令后,就可以更高效地排查服务是否运行、定位资源占用异常以及管理异常进程。