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意味着伪终端
- 时间为我们提供过程运行的时间
- CMD是我们运行以启动该过程的命令
现在这并没有真正提供任何真实的有用信息。
让我们看看ps命令的一些更好的例子:
1.查看所有运行过程
如果要查看由我们运行的所有进程,则可以使用ps命令使用选项x:
ps -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
上述输出意味着处理状态代码中的统计数据。
我们可以在PS命令的"手册"页面中找到详细表格。
但是,我们很少看到PS命令只能选择x。
它通常通过以这种方式伴随选择:
ps -ux
使用选项u,我们将拥有有关每个进程的详细信息:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND igi 503 0.0 0.4 681580 37516 pts/0 Sl 18:09 0:00 gedit igi 2245 0.0 0.0 11300 1496 ? S 18:37 0:00 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh igi 3039 0.0 0.0 77344 3508 ? Ss 10:37 0:00 /lib/systemd/systemd --user igi 3040 0.0 0.0 114632 360 ? S 10:37 0:00 (sd-pam) igi 3054 0.0 0.1 517104 11512 ? SLl 10:37 0:01 /usr/bin/gnome-keyring-daemon --daemonize --login
正如我们所看到的,现在我们可以获得每个进程的用户名和CPU消耗和内存使用情况。
RSS显示过程当前在内存中具有多少内存,而VSZ是过程总共有多少虚拟内存。
2.查看具有PS AUX命令的所有运行进程
我们可能会在Linux教程和文档中看到PS-aux
或者PS Aux of
。
使用已添加的-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