Linux 中关于 ps 命令的一些常用例子
source link: https://www.51cto.com/article/722412.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Linux 中关于 ps 命令的一些常用例子
ps 命令是什么?
Linux 中的 ps 命令可以显示系统中正在运行的进程信息,比如进程ID等。它是一个应用很广泛的工具,有大约80多个选项,足见它的复杂性。本文将介绍一些关于 ps 命令最常用的例子。
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 -x
x 选项将显示所有进程,即使它们不与当前 tty(终端类型)关联,或者它们没有控制终端(如守护进程)。
选项前面的中划线 - 是可选的,但一般在 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 表示进程状态码(Process State Code),你可以在 ps 的 man 手册中查看其详细信息。
不过我们很少会看到 ps 只使用 -x 选项,通常会与选项 -u 一起使用:
ps -ux
使用选项 -u,可以看到每个进程的详细信息:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
gliu 503 0.0 0.4 681580 37516 pts/0 Sl 18:09 0:00 gedit
gliu 2245 0.0 0.0 11300 1496 ? S 18:37 0:00 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
gliu 3039 0.0 0.0 77344 3508 ? Ss 10:37 0:00 /lib/systemd/systemd --user
gliu 3040 0.0 0.0 114632 360 ? S 10:37 0:00 (sd-pam)
gliu 3054 0.0 0.1 517104 11512 ? SLl 10:37 0:01 /usr/bin/gnome-keyring-daemon
上面输出中,可以看到每个进程的用户名、CPU消耗和内存使用情况等。RSS显示进程当前在 RAM 中有多少内存,而 VSZ 则显示进程总共有多少虚拟内存。
2. 使用 ps aux 命令查看所有正在运行的进程
你可能在 Linux 教程或文档中经常看到 px -aux 或者 px aux 这样的例子。
通过使用 -a 选项,可以看到 Linux 系统中所有用户正在运行的进程。
ps -aux
其输出与 ps -ux 相同,但也包含了其他用户的进程,-u 选项可以让你看到进程所属用户。
3. 使用 ps -ef 查看正在运行的进程
除了 ps -aux 之外,还可以使用 -e 选项列出所有正在运行的进程,然后在结合 -f 选项,以获得运行进程的完整列表:
ps -ef
这里请注意 e 前面的中划线 - 很重要,如果没有的话,会显示不同的结果。
此外还可以组合 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 命令来查询进程信息:
ps -pN
可以使用逗号来分割多个PID,进而查询多个进程信息:
ps -pN1,N2,N3
正如本文开始所说的,ps 是一个复杂且应用广泛的命令,本文所介绍的只是一些最常用的例子。关于其详细信息,大家可以查看 man 手册。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK