Linux 中 ps 命令的基本示例
Linux 中的 ps 命令是什么?
Linux 中的 ps 命令显示系统中正在运行的进程。您可以获取您或任何其他用户在同一 Linux 系统上运行的进程的进程 ID (PID) 等信息。
ps 命令是一个功能广泛的工具,有 80 多个命令选项。您可以了解它的强大之处和复杂性。这就是为什么我将向您展示 Linux 中 ps 命令的一些最常见和最有用的示例。
Linux 中 ps 命令的基本用法
如果在 Linux 中使用不带任何选项的 ps 命令,它将显示当前 shell 中正在运行的进程:
ps
这是输出。我在后台发送了 Gedit 命令,这就是它显示三个进程的原因,否则您通常只会看到 ps 和 bash。
PID TTY TIME CMD
503 pts/0 00:00:00 gedit
2053 pts/0 00:00:00 ps
31585 pts/0 00:00:00 bash
在这里:
- PID 是进程的唯一进程ID
- TTY 是用户登录的终端类型。pts 表示伪终端
- TIME 告诉你进程已经运行了多长时间
- CMD 是您运行以启动该进程的命令
现在,这实际上并没有提供任何真正有用的信息。让我们看一些更好的 ps 命令示例:
1. 查看所有正在运行的进程
如果您想查看您运行的所有进程,可以使用带有选项 x 的 ps 命令,如下所示:
ps -x
x 选项将显示所有进程,即使它们与当前 tty(终端类型)无关或者没有控制终端(如守护进程)。
选项 x 之前的 – 是可选的,但 Linux 的一般惯例是在选项之前使用 –,因此我建议您继续遵循它。这不会对您造成伤害。
输出结果如下。我截断了输出,因为它有数百行:
PID TTY STAT TIME COMMAND
503 pts/0 Sl 0:00 gedit
2245 ? S 0:00 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
3039 ? Ss 0:00 /lib/systemd/systemd --user
3040 ? S 0:00 (sd-pam)
3054 ? SLl 0:01 /usr/bin/gnome-keyring-daemon --daemonize --login
3059 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env
上述输出中的 STAT 表示进程状态代码。您可以在ps 命令的手册页中找到详细的表格。
但您很少看到 ps 命令只与选项 x 一起使用。它通常以这样的方式与选项 u 一起使用:
ps -ux
使用选项 u,您将获得有关每个过程的详细信息:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
abhishek 503 0.0 0.4 681580 37516 pts/0 Sl 18:09 0:00 gedit
abhishek 2245 0.0 0.0 11300 1496 ? S 18:37 0:00 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
abhishek 3039 0.0 0.0 77344 3508 ? Ss 10:37 0:00 /lib/systemd/systemd --user
abhishek 3040 0.0 0.0 114632 360 ? S 10:37 0:00 (sd-pam)
abhishek 3054 0.0 0.1 517104 11512 ? SLl 10:37 0:01 /usr/bin/gnome-keyring-daemon --daemonize --login
如您所见,现在您可以获得每个进程的用户名、CPU 消耗和内存使用情况。RSS 显示进程当前在 RAM 中有多少内存,而 VSZ 是进程总共有多少虚拟内存。
2.使用 ps aux 命令查看所有正在运行的进程
您可能会在 Linux 教程和文档中经常看到ps -aux
或。ps aux
添加 -a 选项后,可以看到Linux 系统上所有用户正在运行的进程。
ps -aux
命令输出与 相同,ps -ux
但现在您还拥有来自其他用户的进程。借助 -u 选项,您可以识别哪个进程属于哪个用户。
3.在Linux中使用ps -ef命令查看所有正在运行的进程
除了 ps -aux,你还可以使用-e
选项列出所有正在运行的进程。常见的做法是将它与选项结合使用-f
,以获取用于运行进程的命令的完整列表。
ps -ef
请注意,e 之前的 – 很重要;否则,它会显示不同的结果。我告诉过你,ps 是一个混乱而复杂的命令。
您还可以组合使用 H 选项来查看线程视图中的所有进程以及其父进程下的子进程:
ps -efH
4.查看特定用户正在运行的所有进程
要获取某个用户运行的所有进程的信息,可以使用带有用户名的 -U 选项:
ps -U user_name
例如,我可以像这样查看 root 用户运行的所有进程:
ps -U root
PID TTY TIME CMD
1 ? 00:00:41 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
8 ? 00:00:00 mm_percpu_wq
9 ? 00:00:03 ksoftirqd/0
10 ? 00:01:22 rcu_sched
5.查看某个组运行的所有进程
您还可以通过提供组名或组 ID 对正在运行的进程进行分类,而不是按用户进行分类:
ps -G group_name_or_id
您可以与选项 f 结合以获取完整列表。
6. 获取程序的所有出现次数和 PID
ps 命令的一个基本用途是获取正在运行的程序的进程 ID (PID)。通常,当您要终止一个行为不端的程序时,您会搜索所有程序实例,获取它们的 PID,然后使用 kill 命令终止该进程。
ps -C program__name
例如,如果我必须找到 apt 包管理器的所有正在运行的实例:
ps -C apt
PID TTY TIME CMD
11425 pts/1 00:00:00 apt
您也可以使用 grep 命令来获得类似的结果。
ps aux | grep program_name
7. 获取有关 PID 的进程信息
好吧!您有一个 PID,但不知道它属于哪个进程。您可以使用 ps 命令通过其 PID 查找进程信息,方法如下:
ps -pN
您可以使用多个 PID,用逗号分隔:
ps -pN1,N2,N3
还有什么?
正如我之前所说,ps 是一个复杂而繁琐的命令。这些是你大多数时候都需要的一些最常见的 ps 命令示例。如果你想了解更多,你可以随时参考它的手册页。
如果您有其他经常使用的 ps 命令的有用示例,为什么不在评论部分与我们分享呢?