在linux系统中,查看进程信息最常用的方法是使用ps命令。1. 默认执行 ps 显示当前终端运行的进程,如 pid、tty、time 和 cmd 等信息;2. 使用 ps -ef 查看所有进程并显示进程结构,而 ps aux 更侧重资源占用情况,包括 %cpu、%mem、vsz 和 rss;3. 结合 grep 过滤特定进程,如 ps aux | grep nginx,并可通过 [n]ginx 排除 grep 自身进程;4. 使用 ps -ejh 可显示进程树结构,清晰展示父子关系。这些常用组合基本满足日常进程监控和问题排查需求。
在linux系统中,查看进程信息最常用的方法之一就是使用 ps 命令。它能帮助我们快速了解当前运行的进程状态、资源占用情况等,是日常排查问题和系统监控的重要工具。
1. ps 命令的基本用法
默认情况下,不带参数执行 ps 命令只会显示当前终端中运行的进程,通常是用户启动的一些前台任务。例如:
ps
输出可能如下:
PID TTY TIME CMD 1234 pts/0 00:00:00 bash 5678 pts/0 00:00:00 ps
其中:
- PID 是进程ID。
- TTY 表示终端设备。
- TIME 是该进程使用的CPU时间。
- CMD 是启动该进程的命令。
如果你只是想看看自己当前终端里跑着什么,这样就足够了。
2. 查看所有进程:ps -ef 和 ps aux
要查看系统中所有的进程,通常会用两个经典组合:
ps -ef
这个命令列出所有正在运行的进程,格式清晰,适合查找进程的父子关系(PPID)或具体命令行参数:
ps -ef
输出示例:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 09:00 ? 00:00:01 /sbin/init user1 1234 1233 0 09:10 pts/0 00:00:00 /bin/bash
- UID:启动进程的用户。
- PPID:父进程ID。
- STIME:进程启动时间。
- CMD:完整的命令行。
ps aux
这个命令同样显示所有进程,但更侧重于资源使用情况:
ps aux
输出示例:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 12345 6789 ? Ss 09:00 0:01 /sbin/init user1 1234 0.0 0.2 23456 12345 pts/0 Ss 09:10 0:00 /bin/bash
- %CPU:当前进程占用CPU百分比。
- %MEM:内存使用百分比。
- VSZ:虚拟内存使用量(KB)。
- RSS:物理内存使用量(KB)。
- STAT:进程状态(如S表示睡眠,R表示运行)。
这两个命令可以根据需要选择,-ef 更适合查进程结构,aux 更适合看资源占用。
3. 过滤特定进程:结合 grep 使用
当我们只想查看某个特定程序的进程时,可以将 ps 和 grep 结合使用。比如查找所有与 nginx 相关的进程:
ps aux | grep nginx
或者:
ps -ef | grep nginx
注意点:
-
有时候 grep 自己也会出现在结果中,可以通过加 [n]ginx 的方式排除:
ps aux | grep [n]ginx
这种方式常用于脚本中判断某个服务是否在运行。
4. 显示进程树结构:ps -ejH
如果你想看到进程之间的父子关系,可以用 -ejH 参数来显示树状结构:
ps -ejH
输出示例:
PID PGID SID TTY TIME CMD 1 1 1 ? 00:00:01 /sbin/init 42 1 1 ? 00:00:00 _ systemd-journald
这样就能清楚地看出哪些进程是由哪个父进程创建的。
基本上就这些。ps 虽然是个老命令,但功能非常强大,只要记住几个常用组合,就能满足大部分日常需求。