本教程将重点解释使用 ps 命令的方法以及一些实际示例
ps命令的语法ps命令使用的基本语法如下:
$ ps [options]
ps 命令的“选项”可能是:
这是一个非常基本的 ps 命令用法。只需在控制台上键入“ps”即可查看结果:
$ ps
默认情况下,它向我们显示四列信息。
不带任何选项运行 ps 命令只是该命令的一种最简单的格式,它返回的信息并不多。为了充分利用 ps 命令的强大功能,让我们使用其他选项运行它,这些选项将在以下各节中进一步详细说明。
文章目录
要查看 Linux 系统中的所有进程,您可以运行以下任一命令:
$ ps -A
或者:
$ ps -e
此外,为了列出所有正在运行的进程,请运行:
$ ps -r
为了使用 BSD 格式的 ps 命令查看 Linux 系统上的所有进程,您可以运行以下命令:
$ ps ax
或者
$ ps aux
要列出由命令运行的所有进程,让我们使用以下语法:
$ ps -C
例如,通过运行列出“/usr/sbin/kerneloops”命令的所有进程:
$ ps -C kerneloops
您还可以以空格分隔或逗号分隔列表的形式使用参数,例如:
$ 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
为了按组 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
要列出当前用户正在运行的所有进程,让我们运行带有“-x”选项的命令:
$ ps -x
-f
选项的 ps 命令,以完整格式显示所有进程:$ ps -af
-F
选项的ps 命令。例如:$ ps -F
为了说明,假设您想以 ASCII art 进程层次结构格式显示 Linux 系统上的所有进程,让我们运行:
$ ps af
输出将采用“森林”格式:
w
选项:$ ps w
让我们比较一下运行 ‘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
此外,您可以使用“-L”选项来获取有关 Linux 系统中线程的信息:
$ ps -aL
带有“LWP”列的输出显示线程 ID:
%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
:自进程开始以来经过的时间,以秒为单位。如果我们想查看谁当前登录到您的服务器,我们可以使用 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 手册页。