Linux ps命令示例
ps是Unix/Linux操作系统中使用的内置命令,用于列出当前正在运行的进程。
它显示了一个静态快照,其中包含有关进程的信息,而top,htop和glances显示了重复的更新。
ps命令带有许多操作输出的选项。
它从/proc虚拟文件系统中提取进程的所有信息。
本教程将重点介绍使用ps命令的方式以及一些实际示例
ps命令的语法
ps命令用法的基本语法如下:
$ps [options]
ps命令的“选项”可以是:
- UNIX选项-前划线
- BSD选项-必须使用破折号
- GNU长选项-前面有两个破折号
这是非常基本的ps命令用法。
只需在控制台上键入“ ps”即可查看其结果:
$ps
默认情况下,它向我们显示四列信息。
- PID是运行命令(CMD)的进程ID
- TTY是运行命令的地方
- TIME告诉运行命令时CPU使用了多少时间
- CMD是作为当前进程运行的命令
不带任何选项运行ps命令只是命令的最简单格式,它返回的信息不多。
为了充分利用ps命令的功能,让我们使用其他选项运行它,以下部分将对其进行详细说明。
01)显示所有进程(UNIX格式)
要查看Linux系统中的所有进程,可以运行以下命令之一:
$ps -A
或者:
$ps -e
此外,为了列出所有正在运行的进程,请运行:
$ps -r
02)显示所有进程(BSD格式)
为了使用BSD格式的ps命令查看Linux系统上的所有进程,可以运行以下命令:
$ps ax
或者
$ps aux
其中:
- USER-用户运行过程
- PID-进程ID
- %CPU /%MEM-进程占用的CPU/内存的百分比
- VSZ-进程占用的虚拟内存大小
- RSS-进程占用的物理内存大小
- 开始-开始时间
- STAT-进程的状态,其中:S(睡眠),R(运行),I(可中断睡眠)。
- 时间-显示内核为该正在运行的进程分配的CPU时间。
- COMMAND-作为当前进程运行的命令
03)显示命令运行的所有进程
要列出命令所运行的所有进程,让我们使用以下语法:
$ps -C <command_name>
例如,通过运行列出“/usr/sbin/kerneloops”命令的所有进程:
$ps -C kerneloops
我们还可以使用以空格分隔或者逗号分隔的列表形式的参数,例如:
$ps -C sshd,systemd
04)显示用户正在运行的所有进程
如果要按用户ID为1000的用户列出进程,请运行以下命令:
$ps -u 1000
我们也可以按用户名搜索过程:
$ps -U root -u root u
-U参数将通过真实用户ID(RUID)选择。
它选择真实用户名或者ID在用户列表中的进程。
真实的用户ID标识创建进程的用户。
而-u paramater
将通过有效的用户ID(EUID)选择
05)显示组拥有的流程
为了列出特定组名拥有的所有进程,让我们运行带有-fG选项的命令。
例如:
$ps -fG cas
为了按组ID显示所有进程,可以使用带有-g选项的命令。
例如:
$ps -g 1
输出:
PID TTY TIME CMD 1 ? 00:00:03 systemd
06)通过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
07)按TTY显示流程
为了按TTY显示所有进程,我们可以使用'-t'选项运行命令。
例如:
$ps -t tty1
08)显示当前用户拥有的进程
要列出当前用户正在运行的所有进程,让我们使用“ -x”选项运行命令:
$ps -x
09)显示所有具有完整格式列表的进程
例如,让我们使用-f选项运行ps命令,以完整格式显示所有进程:
$ps -af
10)以另外的格式显示所有进程
此外,要查看结果的完整格式列表,请运行带有-F选项的ps命令。
例如:
$ps -F
11)以ASCII层次结构格式显示所有进程
为了说明这一点,假设我们要以ASCII美术流程层次结构格式显示Linux系统上的所有流程,让我们运行:
$ps af
12)显示过程扩大输出
如果要在运行ps命令时加宽输出,请使用w
选项:
$ps w
让我们比较运行“ ps w”和“ ps”的输出:
13)根据用户定义的格式显示过程
我们可以使用以下语法以用户定义的格式查看:
Syntax: $ps --format column_name $ps -o column_name $ps o column_name For example: $ps -e -o user,pid,cmd
14)显示带有线程ID的线程
例如,为了显示带有SPID列的线程(SPID是线程ID),请运行:
$ps -aT
15)显示有关线程的信息
此外,我们可以使用-L选项来获取有关Linux系统中线程的信息:
$ps -aL
“ LWP”列的输出显示了线程ID:
一些更多的例子
01)检查哪些进程占用最多的内存
对于系统上所有正在运行的进程,以下命令将显示使用进程的大多数内存:第一列中的“%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