ps 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

ps 命令安装:


-bash: ps: command not found

#Debian
apt-get install procps-ng

#Ubuntu
apt-get install procps-ng

#Arch Linux
pacman -S procps-ng

#Kali Linux
apt-get install procps-ng

#CentOS
yum install procps-ng

#Fedora
dnf install procps-ng

#Raspbian
apt-get install procps-ng

ps 命令补充说明:


ps 命令是 Process Status 的缩写。进程状态命令 ps 显示有关活动进程的信息。 每个操作系统的 ps 版本略有不同,因此请查阅文档以获取特定选项。

ps 命令语法:


ps [options]

ps 命令选项(简单过程选项 Simple Process Selection):


ps 命令能够支持的系统类型相当的多,选项多的离谱,希望不要被吓到,让我们一项一项拆解

a 解除BSD风格的“只有你自己”的限制,当使用某些BSD风格(不带“-”)选项或ps个性设置类似于BSD时,这将强加于所有进程的集合。 以这种方式选择的过程组是通过其他方式选择的过程组的补充。 另一种描述是,此选项使ps列出带有终端(tty)的所有进程,或者与x选项一起使用时列出所有进程。
-A  选择所有进程。 与-e相同。
-a  选择所有进程,除了会话领导者和不与终端关联的进程。
-d  选择除会议负责人以外的所有进程。
--deselect  选择满足指定条件的所有过程(取消选择)。 与-N相同。
-e  选择所有进程。 与-A相同。
g 几乎所有流程,甚至是会议负责人。 该标志已过时,在将来的版本中可能会停止使用。 它通常由a标记暗示,仅在以SunOS4身份运行时才有用。
-N  选择满足指定条件的所有过程(取消选择)。 与--deselect相同。
T 选择与此终端关联的所有进程。 与 t 选项相同,没有任何参数。
r 将选择限制为仅正在运行的进程。
x 解除BSD样式的“必须具有tty”限制,当使用某些BSD样式(不带“-”)选项或ps个性设置类似于BSD时,这将强加于所有进程的集合。 以这种方式选择的过程组是通过其他方式选择的过程组的补充。 另一个描述是,此选项使ps列出您拥有的所有进程(与ps相同的EUID),或与a选项一起使用时列出所有进程。

ps 命令选项(按清单选项 Process Selection By List):


这些选项以空格或逗号分隔列表的形式接受单个参数,并且可以多次使用都是有效的命令。 例如:

ps -p "1 2" -p 3,4

通过列表选择进程的选项如下:

-123  与“ --pid 123”相同。
123 与“ --pid 123”相同。
-C cmdlist  通过命令名称选择。 这将选择其可执行文件名称在cmdlist中给出的进程。
-G grplist  按真实组ID(RGID)或名称选择。 这将选择真实组名或ID在grplist列表中的进程。 真实组ID标识创建进程的用户的组。
-g grplist  通过会话或有效组名选择。 按会话选择是由许多标准指定的,但是按有效组选择是其他操作系统使用的逻辑行为。 当列表完全为数字时(与会话相同),此ps将按会话选择。 仅当还指定了某些组名时,组ID号才起作用。 请参阅-s和--group选项。
--Group grplist 按真实组ID(RGID)或名称选择。 与-G相同。
--group grplist 通过有效的组ID(EGID)或名称进行选择。 这将选择其有效组名或ID在组列表中的进程。 有效组ID描述了该进程使用其文件访问权限的组。 -g选项通常是--group的替代方法。
p pidlist 按进程ID选择。 与-p和--pid相同。
-p pidlist  通过PID选择。 这将选择其进程ID号显示在pidlist中的进程。 与p和--pid相同。
--pid pidlist 按进程ID选择。 与-p和p相同。
--ppid pidlist  按父进程ID选择。 这将选择在pidlist中具有父进程ID的进程。 也就是说,它选择的进程是pidlist中列出的进程的子进程。
-s sesslist 通过会话ID选择。 这将选择具有在sesslist中指定的会话ID的进程。
--sid sesslist  通过会话ID选择。 与-s相同。
t ttylist 通过tty选择。 与-t和--tty几乎相同,但是也可以与空的ttylist一起使用以指示与ps关联的终端。 使用T选项被认为比使用带有空ttylist的t更干净。
-t ttylist  通过tty选择。 这将选择与ttylist中给出的终端相关联的进程。 终端(tty或用于文本输出的屏幕)可以用几种形式指定:/ dev / ttyS1,ttyS1,S1。 普通的“-”可用于选择未附加到任何终端的进程。
--tty ttylist 按终端选择。 与-t和t相同。
U userlist  通过有效的用户ID(EUID)或名称进行选择。 这将选择有效用户名或ID在用户列表中的进程。 有效用户ID描述了该进程使用其文件访问权限的用户。 与-u和--user相同。
-U userlist 按真实用户ID(RUID)或名称选择。 它选择真实用户名或ID在用户列表中的进程。 真实用户ID标识创建流程的用户。
-u userlist 通过有效的用户ID(EUID)或名称进行选择。 这将选择有效用户名或ID在用户列表中的进程。有效用户ID描述了该进程使用其文件访问权限的用户。 与U和--user相同。

--User userlist 按真实用户ID(RUID)或名称选择。 与-U相同。
--user userlist 通过有效的用户ID(EUID)或名称进行选择。 与-u和U相同。

ps 命令选项(按输出格式控制 Output Format Control):


这些选项用于选择 ps 显示的信息。 输出可能因版本而异。

-c  显示-l选项的不同调度程序信息。
--context 显示安全上下文格式(使用SE Linux时)。
-f  进行全格式列表。 该选项可以与其他UNIX风格的选项结合使用以添加其他列。 它还会导致命令参数被打印。 与-L一起使用时,将添加NLWP(线程数)和LWP(线程ID)列。 请参阅c选项,format关键字args和format关键字comm。
-F  额外的完整格式。 请参阅-f选项(-F表示)。
--format 格式用户定义的格式。 与-o和o相同。
j BSD作业控制格式。
-j  作业格式。
l 显示BSD长格式。
-l  长格式。 -y选项通常对此很有用。
-M  添加一列安全数据。 与Z相同(对于SE Linux)。
O format  已预加载o(已过载)。 BSD O选项的作用类似于-O(带有一些预定义公共字段的用户定义输出格式),或者可用于指定排序顺序。 启发式用于确定此选项的行为。 为了确保获得所需的行为(排序或格式化),请以其他方式指定该选项(例如,使用-O或--sort)。 当用作格式化选项时,它与-O相同,具有BSD个性。
-O format 与-o类似,但预加载了一些默认列。 与“ -o pid,格式,状态,tname,时间,命令”相同或“ -o pid,格式,tname,时间,cmd”; 请参阅下面的-o。
o format  指定用户定义的格式。 与-o和--format相同。
-o format 用户定义的格式。 format是单个参数,格式为空格分隔或逗号分隔的列表,它提供了一种指定单个输出列的方法。 可以在下面的“标准格式说明符”部分中描述可识别的关键字。 标题可以根据需要重命名(“ ps -o pid,ruser = RealUser -o comm = Command”)。 如果所有列标题都是空的(“ ps -o pid = -o comm =”),那么标题行将不会输出。 列宽将根据宽标题增加; 这可以用于加宽WCHAN等列(“ ps -o pid,wchan = WIDE- WCHAN-COLUMN -o comm”)。 也提供显式宽度控制(“ ps opid,wchan:42,cmd”)。 “ ps -o pid = X,comm = Y”的行为因人而异; 输出可能是名为“ X,comm = Y”的一列或名为“ X”和“ Y”的两列。 如有疑问,请使用多个-o选项。 使用PS_FORMAT环境变量根据需要指定默认值; DefSysV和DefBSD是可用于选择默认UNIX或BSD列的宏。

s 显示信号格式。
u 显示面向用户的格式。
v 显示虚拟内存格式。
X 注册格式。
-y  不显示标志; 显示rss代替addr。 此选项只能与-l一起使用。
Z 添加一列安全数据。 与-M相同(对于SE Linux)。

ps 命令选项(按输出修改器 Output Modifiers):


c 显示真实的命令名称。 这是从可执行文件的名称而不是argv值派生的。 因此,不会显示命令参数及其任何修改。 该选项有效地将args格式关键字转换为comm格式关键字; 它与-f格式选项和各种BSD样式的格式选项(通常都显示命令参数)一起使用时非常有用。 请参见-f选项,格式关键字args和格式关键字comm。
--cols n  设置屏幕宽度。
--columns n 设置屏幕宽度。
--cumulative  包括一些无效的子进程数据(作为父进程的总和)。
e 在命令后显示环境。
f ASCII艺术流程层次结构(与许多树木一样,也称为“森林”)
--forest ASCII艺术处理树。
h 没有标题。 (或BSD角色中每个屏幕一个标题)。 -h选项有问题。 标准BSD ps使用此选项在输出的每一页上打印标题,而较早的Linux ps使用此选项完全禁用标题。 除非已选择BSD个性,否则Linux ps遵循不打印标题的标准用法,在这种情况下,它将在输出的每一页上打印标题。 无论当前的个性如何,都可以使用长选项--headers和--no-headers分别在每页上启用打印标题或完全禁用标题。
-H  显示流程层次结构(林)。
--headers 重复标题行,每页输出一行。
k spec  指定排序顺序。 排序语法为“ [+ |-] key [,[+ |-] key [,...]]”。 从“标准格式规范”部分中选择一个多字母键。 “ +”是可选的,因为默认方向是按数字或字典顺序递增。 与--sort相同。

Examples:
-------------------------------
ps jaxkuid,-ppid,+pid
ps axk comm o comm,args
ps kstart_time -ef
--lines n 设置屏幕高度。
-n namelist 设置名称列表文件。 与N相同。名称列表文件对于WCHAN的正确显示是必需的,并且必须与当前Linux内核完全匹配,才能正确输出。 如果没有此选项,则名称列表的默认搜索路径为:

$PS_SYSMAP
$PS_SYSTEM_MAP
/proc/*/wchan
/boot/System.map-$(uname -r)
/boot/System.map
/lib/modules/$(uname -r)/System.map
/usr/src/linux/System.map
/System.map
-------------------------------

n WCHAN和USER的数值输出(包括所有类型的UID和GID)。
N namelist  指定名称列表文件。 与-n相同; 参见上面的-n。
--no-headers  完全不打印标题行。 --no-heading是此选项的别名。
O order 排序顺序(超载)。 BSD O选项的作用类似于-O(带有一些预定义公共字段的用户定义输出格式),或者可用于指定排序顺序。 启发式用于确定此选项的行为。 为了确保获得所需的行为(排序或格式化),请以其他方式指定该选项(例如,使用-O或--sort)。

对于排序,过时的BSD O选项语法为“ O [+ |-] k1 [,[+ |-] k2 [,...]]”。 它根据由一个字母的短键k1,k2,...的序列指定的多级排序对进程列表进行排序,这在下面的“过时的排序键”部分中进行了描述。 当前,“ +”是可选的,仅在键上重新指定默认方向,但可能有助于区分O排序与O格式。 “-”仅在其前面的键上反转方向。

--rows n 设置屏幕高度。
S 总结一些信息,例如CPU利用率,从死掉的子进程到父进程。 这对于检查父进程反复派遣短命孩子进行工作的系统很有用。
--sort spec 指定排序顺序。 排序语法为“ [+ |-] key [,[+ |-] key [,...]]”。 从“标准格式规范”部分中选择一个多字母键。 “ +”是可选的,因为默认方向是按数字或字典顺序递增。 与k相同。 例如:“ ps jax --sort = uid,-ppid,+ pid”
w 宽输出。 两次使用此选项可获得无限宽度。
-w 宽输出。 两次使用此选项可获得无限宽度。
--width n 设置屏幕宽度。

ps 命令选项(按线程显示 Thread Display):


H 将线程显示为进程。
-L  显示线程,可能带有LWP和NLWP列。
m 在进程之后显示线程。
-m  在进程之后显示线程。
-T  显示线程,可能带有SPID列。

ps 命令选项(其他 Displaying Other Information):


--help section  打印帮助信息。 section参数可以是简单,列表,输出,线程,其他或全部之一。 可以将自变量缩短为带下划线的字母之一,例如:s | l | o | t | m | a。
--info  打印调试信息。
L   列出所有格式说明符。
V 打印procps-ng版本。
-V  打印procps-ng版本。
--version 打印procps-ng版本。

ps 命令实例


要使用标准语法查看系统上运行的每个进程:

ps -e
ps -ef
ps -eF
ps -ely

要使用BSD语法查看系统上的每个进程,请执行以下操作:

ps ax
ps axu

要显示进程树:

ps -ejH
ps axjf

获取有关线程的信息:

ps -eLf
ps axms

获取安全信息:

ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM

要以用户格式查看以root身份运行的每个进程(真实和有效ID),请执行以下操作:

ps -U root -u root u

要以用户定义的格式查看每个进程:

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan

仅打印syslogd的进程ID,即syslog守护程序:

ps -C syslogd -o pid=

#仅打印进程ID 15的名称:
ps -p 15 -o comm=

ps 命令其他常用实例备份:

ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率
ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序
ps aux | sort -nk 3  # 按 CPU 资源的使用量对进程进行排序
ps -A # 显示所有进程信息
ps -u root # 显示指定用户信息
ps -efL # 查看线程数
ps -e -o "%C : %p :%z : %a"|sort -k5 -nr # 查看进程并按内存使用大小排列
ps -ef # 显示所有进程信息,连同命令行
ps -ef | grep ssh # ps 与grep 常用组合用法,查找特定进程
ps -C nginx # 通过名字或命令搜索进程
ps aux --sort=-pcpu,+pmem # CPU或者内存进行排序,-降序,+升序
ps -f --forest -C nginx # 用树的风格显示进程的层次关系
ps -o pid,uname,comm -C nginx # 显示一个父进程的子进程
ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm # 重定义标签
ps -e -o pid,comm,etime # 显示进程运行的时间
ps -aux | grep named # 查看named进程详细信息
ps -o command -p 91730 | sed -n 2p # 通过进程id获取服务名称

ps 命令扩展阅读:




ps 命令评论

共收录到 491Linux 命令