Linux中ps命令的基本示例

时间:2020-03-05 15:31:26  来源:igfitidea点击:

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