文章目录
PS是一个内置的的Unix/Linux操作系统来列出当前运行的进程使用的命令。它显示包含进程信息的静态快照,而 top、htop 和 Glances 显示重复更新。PS 命令带有许多操作输出的选项。它从 /proc 虚拟文件系统中提取进程的所有信息。
本教程将重点解释使用 ps 命令的方法以及一些实际示例
ps命令的语法
ps命令使用的基本语法如下:
$ ps [options]
ps命令
ps 命令的“选项”可能是:
这是一个非常基本的 ps 命令用法。只需在控制台上键入“ps”即可查看结果:
$ ps
默认情况下,它向我们显示四列信息。
不带任何选项运行 ps 命令只是该命令的一种最简单的格式,它返回的信息并不多。为了充分利用 ps 命令的强大功能,让我们使用其他选项运行它,这些选项将在以下各节中进一步详细说明。
要查看 Linux 系统中的所有进程,您可以运行以下任一命令:
$ ps -A
或者:
$ ps -e
ps -e 的输出
此外,为了列出所有正在运行的进程,请运行:
$ ps -r
ps -r 的输出
为了使用 BSD 格式的 ps 命令查看 Linux 系统上的所有进程,您可以运行以下命令:
$ ps ax
或者
$ ps aux
ps 辅助输出
要列出由命令运行的所有进程,让我们使用以下语法:
$ 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
您可以通过运行带有“-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 显示所有进程,您可以运行带有“-t”选项的命令。例如:
$ ps -t tty1
ps -t 的输出
要列出当前用户正在运行的所有进程,让我们运行带有“-x”选项的命令:
$ ps -x
ps -x 的输出
例如,让我们运行带有-f
选项的 ps 命令,以完整格式显示所有进程:
$ ps -af
ps -af 的输出
此外,要查看结果的额外完整格式列表,请运行带有-F
选项的ps 命令。例如:
$ ps -F
ps-F 的输出
为了说明,假设您想以 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
例如,为了显示带有 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 手册页。