Categories: Shell编程

15个Linux ps 命令例子

PS是一个内置的的Unix/Linux操作系统来列出当前运行的进程使用的命令。它显示包含进程信息的静态快照,而 top、htop 和 Glances 显示重复更新。PS 命令带有许多操作输出的选项。它从 /proc 虚拟文件系统中提取进程的所有信息。

本教程将重点解释使用 ps 命令的方法以及一些实际示例

ps命令的语法

ps命令使用的基本语法如下:

$ ps [options]


ps命令

ps 命令的“选项”可能是:

  • UNIX 选项 – 前面有一个破折号
  • BSD 选项 – 必须在没有破折号的情况下使用
  • GNU 长选项 – 前面有两个破折号

这是一个非常基本的 ps 命令用法。只需在控制台上键入“ps”即可查看结果:

$ ps

默认情况下,它向我们显示四列信息。

  • PID是运行命令(CMD)的进程ID
  • TTY是运行命令运行的地方
  • TIME 告诉在运行命令时 CPU 使用了多少时间
  • CMD 是作为当前进程运行的命令

不带任何选项运行 ps 命令只是该命令的一种最简单的格式,它返回的信息并不多。为了充分利用 ps 命令的强大功能,让我们使用其他选项运行它,这些选项将在以下各节中进一步详细说明。

显示所有进程(UNIX 格式)

要查看 Linux 系统中的所有进程,您可以运行以下任一命令:

$ ps -A

或者:

$ ps -e


ps -e 的输出

此外,为了列出所有正在运行的进程,请运行:

$ ps -r


ps -r 的输出

显示所有进程(BSD格式)

为了使用 BSD 格式的 ps 命令查看 Linux 系统上的所有进程,您可以运行以下命令:

$ ps ax

或者

$ ps aux


ps 辅助输出

  • USER – 用户运行进程
  • PID – 进程 ID
  • %CPU / %MEM – 进程占用的 CPU / RAM 的百分比
  • VSZ – 进程占用的虚拟内存大小
  • RSS – 进程占用的物理内存大小
  • START – 开始时间
  • STAT – 进程的状态,其中:S(睡眠)、R(运行)、I(可中断睡眠)。
  • 时间 – 显示内核为该正在运行的进程提供了多长时间的 CPU 时间。
  • COMMAND – 作为当前进程运行的命令

显示由命令运行的所有进程

要列出由命令运行的所有进程,让我们使用以下语法:

$ ps -C 

例如,通过运行列出“/usr/sbin/kerneloops”命令的所有进程:

$ ps -C kerneloops


ps -C 的输出

您还可以以空格分隔或逗号分隔列表的形式使用参数,例如:

$ ps -C sshd,systemd

显示用户运行的所有进程

如果要按用户 ID 1000 的用户列出进程,请运行以下命令:

$ ps -u 1000


您还可以按用户名搜索进程:

$ ps -U root -u root u

-U parameter 会选择由 real user ID (RUID)。它选择真实用户名或 ID 在用户列表列表中的进程。真实用户 ID 标识创建流程的用户。

-u paramater 将通过有效用户 ID (EUID) 进行选择

显示组拥有的进程

为了列出特定组名拥有的所有进程,让我们运行带有-fG选项的命令。例如:

$ ps -fG cas


ps -fG 的输出

为了按组 ID 显示所有进程,您可以运行带有“-g”选项的命令。例如:

$ ps -g 1

输出:

   PID TTY          TIME CMD      1 ?        00:00:03 systemd

通过PID显示进程

您可以通过运行带有“-fp”选项的 ps 命令按 PID 列出所有进程。例如:

$ ps -fp 34531

输出:

UID         PID   PPID  C STIME TTY          TIME CMD
cas       34531      1  0 06:16 ?        00:00:00 /lib/systemd/systemd --user

此外,为了按 PPID 列出所有进程,让我们运行带有“–ppid”选项的命令:

$ ps -f --ppid 34529

输出:

UID         PID   PPID  C STIME TTY          TIME CMD
cas       34609  34529  0 06:16 ?        00:00:00 sshd: cas@pts/0

通过 TTY 显示进程

为了通过 TTY 显示所有进程,您可以运行带有“-t”选项的命令。例如:

$ ps -t tty1


ps -t 的输出

显示当前用户拥有的进程

要列出当前用户正在运行的所有进程,让我们运行带有“-x”选项的命令:

$ ps -x


ps -x 的输出

以完整格式列表显示所有进程

例如,让我们运行带有-f选项的 ps 命令,以完整格式显示所有进程:

$ ps -af


ps -af 的输出

以额外的格式显示所有进程

此外,要查看结果的额外完整格式列表,请运行带有-F选项的ps 命令。例如:

$ ps -F


ps-F 的输出

以ASCII层级格式显示所有进程

为了说明,假设您想以 ASCII art 进程层次结构格式显示 Linux 系统上的所有进程,让我们运行:

$ ps af

输出将采用“森林”格式:


ps af 的输出

加宽输出中的显示过程

如果要在运行 ps 命令时扩大输出,请使用w选项:

$ ps w

让我们比较一下运行 ‘ps w’ 和 ‘ps’ 的输出:


输出 ps w 和 ps

根据用户定义的格式显示过程

您可以使用以下语法以用户定义的格式查看:

Syntax:
$ ps --format column_name
$ ps -o column_name
$ ps o column_name

For example:
$ ps -e -o user,pid,cmd

显示带有线程 id 的线程

例如,为了显示带有 SPID 列的线程(SPID 是线程 ID),请运行:

$ ps -aT


ps -aT 的输出

显示线程信息

此外,您可以使用“-L”选项来获取有关 Linux 系统中线程的信息:

$ ps -aL

带有“LWP”列的输出显示线程 ID:


ps -aL 的输出

更多例子

01) 检查哪些进程占用最多 RAM

下面的命令将使用进程显示多数存储器,%MEM 在第一列中, PID 在系统上的所有运行中的进程第三列第二列和命令:

$ ps -eo pmem,pid,cmd | sort -k 1 -nr

02) 显示特定进程id的所有线程

这将显示特定进程 pid 的所有线程。

$ ps -Lf -p 3482

03) 显示父进程的子进程

这将显示一个进程的所有子进程,并有助于找出从这个主进程中分叉出哪些进程。

$ ps -o pid,pcpu,pmem,uname,comm -C apache2

04) 显示进程运行了多长时间

以下命令将显示“mysql”进程在系统上运行的时间:

$ ps -e -o pid,comm,etime | grep mysql
3107 mysqld_safe 18-07:01:53
3469 mysqld 18-07:01:52
  • etime:进程开始后经过的时间,格式为 [[DD-]hh:]mm:ss。
  • etimes:自进程开始以来经过的时间,以秒为单位。

05) 获取安全信息

如果我们想查看谁当前登录到您的服务器,我们可以使用 ps 命令查看它:

$ ps -eo pid,user,args

现在您可以通过以下命令将 pid 映射到它们各自的 systemd 单元:

$ ps -e -o pid,unit,cmd

结论

pstree(或使用 ps -axjf )和 pgrep 是附加命令,可以帮助获取有关正在运行的进程的信息。

您可以使用 watch 命令将 ps 用作实时监视器,比如说,我们想按 CPU 过滤进程,并且内存使用情况报告每 1 秒更新一次。

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’

在本教程中,我们学习了在 Linux 中使用 ps 命令的多种方法。要探索所有选项,请参阅ps 手册页

5.0
01
如何从Windows和Linux Ping IP v6地址
linux stat命令详解
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Share
Published by
嘻嘻

Recent Posts

全球货币导航网页上线了!

o在全球化的今天,货币兑换和国…

8小时 ago

bash字符串拼接

在编程中,字符串的拼接是一个非…

9小时 ago

Bash Case详解

Bash case 语句通常用…

9小时 ago

Bash for详解

for循环是编程语言中的基础概…

9小时 ago

liunux中你必须知道alias命令?

在Linux操作系统中,无论你…

1天 ago

zshrc文件详解

Zsh 是一个强大的 shel…

2天 ago