ps命令
发布日期:2021-06-30 20:53:45 浏览次数:3 分类:技术文章

本文共 11328 字,大约阅读时间需要 37 分钟。

文章目录

ps:报告当前进程的快照。

简介: ps [参数]

**说明:**ps 显示有关所选活动进程的信息。如果要重复更新所选内容和显示的信息,请改用top

参数格式

1、UNIX选项,可以分组,前面必须有破折号。

2、BSD选项,可以分组,不能与破折号一起使用。

3、GNU long选项,前面有两个破折号。

注释:

BSD是泛指类unix系统

GUN 是指一个开源的操作系统

不同类型的选项可以自由混合,但可能会出现冲突。有一些同义选项,功能相同(因为ps版本兼容导致重复)

注意

“ps-aux”与“ps aux”不同。

POSIX和UNIX标准要求“ps-aux”打印名为“x”的用户拥有的所有进程,以及打印-a选项选择的所有进程。

如果名为“x”的用户不存在,这个ps可能会将命令解释为“ps aux”,并打印警告。
这种行为旨在帮助转变旧的脚本和习惯。
它是脆弱的,随时可能改变,因此不应依赖。

默认情况下,ps选择与当前用户具有相同有效用户ID的所有进程,并与调用程序关联到同一终端。

它显示进程ID(pid=pid)、与进程关联的终端(tname=TTY)、以[DD-]hh:mm:ss格式(时间=时间)的累计CPU时间以及可执行名称(ucmd=CMD)。
默认情况下,输出未排序。

[root@localhost ~]# ps   PID TTY          TIME CMD  6032 pts/1    00:00:00 bash 11305 pts/1    00:00:00 sleep 11318 pts/1    00:00:00 ps

使用BSD样式选项将向默认显示添加进程状态(stat=stat),并显示命令args(args=command),而不是可执行文件名。

BSD:不带破折号的参数

[root@localhost ~]# ps a   PID TTY      STAT   TIME COMMAND  1587 tty1     Ss+    0:00 -bash  6007 pts/0    Ss+    0:00 -bash  6032 pts/1    Ss     0:00 -bash 11697 pts/1    R+     0:00 ps a[1]+  Done                    sleep 30

示例

标准语法

UID         PID   PPID  C STIME TTY          TIME CMDroot          1      0  0 06:22 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --systemroot          2      0  0 06:22 ?        00:00:00 [kthreadd]

程序和进程

1、程序:程序是静止的,程序就是磁盘上的一个文件。

2、进程:进程是一个正在执行的程序的实例。是动态的

3、一旦程序被操作系统加载进内存了,那么程序就成为了进程。

PID 和PPID

1、PID:PID是程序被操作系统加载到内存成为进程后动态分配的资源。

每次程序执行的时候,操作系统都会重新加载,PID在每次加载的时候都是不同的

2、PID和PPID都是非零的整数

3、PPID:是程序的父进程号

4、PID是唯一的,一个PID只标识一个进程。

5、一个进程创建的另一个新进程称为子进程。相反地,创建子进程的进程称为父进程。

特殊说明

1、所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫init进程。

2、init进程是linux内核启动后的第一个执行的进程。

3、init引导系统,启动守护进程并运行必要的程序。

BSD语法

[root@localhost ~]# ps auxUSER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot          1  0.0  0.1 128164  6820 ?        Ss   06:22   0:04 /usr/lib/systemd/systemd --switched-root --systroot          2  0.0  0.0      0     0 ?        S    06:22   0:00 [kthreadd]root          4  0.0  0.0      0     0 ?        S<   06:22   0:00 [kworker/0:0H]

注释

USER 运行的用户

PID 进程号

%CPU 占用CPU运行时间的百分比

%MEM 占用内存大小的百分比

TTY 进程关联的终端

VSZ 进程虚拟内存大小

RSS 常驻集大小,任务使用的非交换物理内存(千字节)

STAT 进程运行状态

START 进程开始运行的时间

TIME 累计CPU时间

COMMAND 注释

打印流程树

[root@localhost ~]# ps -ejH   PID   PGID    SID TTY          TIME CMD     2      0      0 ?        00:00:00 kthreadd     4      0      0 ?        00:00:00   kworker/0:0H     6      0      0 ?        00:00:00   ksoftirqd/0

注释:

PGID 进程组标识,等效进程组负责人的进程标识。

SID 会话ID,或者相当于会话负责人的进程ID。

获取有关线程的信息

[root@localhost ~]# ps -eLfUID         PID   PPID    LWP  C NLWP STIME TTY          TIME CMDroot          1      0      1  0    1 Oct14 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --system -root          2      0      2  0    1 Oct14 ?        00:00:00 [kthreadd]

UID 用户uid

PID 进程id

PPID 父进程id

LWP 可分派实体的轻量级进程(线程)ID

C 处理器利用率

NLWP 进程中的线程数

STIME 进程开始的时间

TTY 进程关联的终端

TIME 累计CPU时间

CMD 说明

[root@localhost ~]# ps  axms  UID    PID          PENDING          BLOCKED          IGNORED           CAUGHT STAT TTY        TIME COMMAND    0      1 0000000000000000                -                -                - -    ?          0:04 /usr/lib/sy    0      - 0000000000000000 7be3c0fe28014a03 0000000000001000 00000001800004ec Ss   -          0:04 -

UID 用户id

PID 进程id

PENDING 挂起信号的掩饰码

BLOCKED 封锁信号的屏蔽

IGNORED 忽略信号屏蔽

CAUGHT 捕获信号的屏蔽

STAT 多字符进程状态。

TTY 进程关联的终端

获取安全信息

[root@localhost ~]# ps axZLABEL                              PID TTY      STAT   TIME COMMANDsystem_u:system_r:init_t:s0          1 ?        Ss     0:04 /usr/lib/systemd/systemd --switched-root --system --dsystem_u:system_r:kernel_t:s0        2 ?        S      0:00 [kthreadd]

LABEL 安全标签,最常用于SELinux上下文数据。

PID 进程id

TTY 进程关联的终端

STAT 多字符进程状态。

TIME 累计CPU时间

COMMAND 说明

指定用户运行的进程

示例中使用的chrony

[root@localhost ~]# ps -U chrony -u chrony uUSER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDchrony      692  0.0  0.0 117808  1852 ?        S    Oct14   0:00 /usr/sbin/chronyd

USER 运行的用户

PID 进程号

%CPU 占用CPU运行时间的百分比

%MEM 占用内存大小的百分比

VSZ 进程虚拟内存大小

RSS 常驻集大小,任务使用的非交换物理内存

TTY 进程关联的终端

STAT 进程运行状态

START 进程开始运行的时间

TIME 累计CPU时间

COMMAND 注释

参数选项

(因为参数重复太多,决定不记录man手册整理)

-A 选择所有进程。与-e相同。

-a 选择除会话引导程序和与终端无关的进程之外的所有进程。

-d 选择除会话引导程序之外的所有进程。

-f 做完整的格式列表

自定义打印信息

[root@localhost ~]# ps -eo "%p %y %x %c %z"   PID TTY          TIME COMMAND            VSZ     1 ?        00:00:04 systemd         128164     2 ?        00:00:00 kthreadd             0

自定义列表

CODE   NORMAL   HEADER       %C     pcpu     %CPU       %G     group    GROUP       %P     ppid     PPID       %U     user     USER       %a     args     COMMAND       %c     comm     COMMAND       %g     rgroup   RGROUP       %n     nice     NI       %p     pid      PID       %r     pgid     PGID       %t     etime    ELAPSED       %u     ruser    RUSER       %x     time     TIME       %y     tty      TTY       %z     vsz      VSZ

进程占用内存大小排序

ps aux | sort -k4,4nr | head -n 10

进程标志

这些值的总和显示在“F”列中,该列由标志输出说明符提供:

1     分叉但没有执行               4     使用的超级用户权限

进程状态

D    不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生R   正在运行或可运行(在运行队列排队中)S   可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)T   已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行W   正在换页(2.6.内核之前有效) X   死进程 (未开启) Z   僵尸进程  进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的 <   高优先级(not nice to other users) N   低优先级(nice to other users) L   页面锁定在内存(实时和定制的IO) s   一个信息头 l   多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样) +   在前台进程组

标准格式说明符

以下是不同的关键字,可用于控制输出格式(例如,使用选项-o)或使用GNU样式——排序选项。              例如: ps -eo pid,user,args --sort user此版本的ps尝试识别ps的其他实现中使用的大多数关键字。       以下用户定义的格式说明符可能包含空格: args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart, start.某些关键字可能无法用于排序。                    CODE        HEADER    DESCRIPTION       %cpu        %CPU      进程的cpu利用率为“##.#”格式。目前,它是CPU使用时间除以进程的时间                                    %mem        %MEM      进程的驻留集大小与计算机上物理内存的比率,以百分比表示。       args        COMMAND  命令及其所有参数都是字符串       blocked     BLOCKED  封锁信号的屏蔽,根据字段的宽度,十六进制格式的32位或64位掩码       bsdstart    START     命令启动的时间。       bsdtime     TIME      累计cpu时间,用户+系统。       c           C         处理器利用率。当前,这是进程生存期内使用百分比的整数值。       caught      CAUGHT    捕获信号的屏蔽,以十六进制的格式显示64位或64位的字段宽度。       cgroup      CGROUP    显示进程所属的控制组。       class       CLS      进程的调度类。字段的可能值为:                                      -   未报告                                        TS  计划其他                                       FF  计划先进先出                                      RR  计划                                      B   计划批次                                      ISO 计划                                      IDL 计划空闲                                      DLN 截止日期                                      ?   未知值       comm        COMMAND    命令名       cp          CP        每百万(十分之一)的CPU使用率。       cputime     TIME      累计CPU时间,“[DD-]hh:mm:ss”格式。(别名时间)。       drs         DRS       数据驻留集大小,用于非可执行代码的物理内存量。       egid        EGID      进程的有效组ID号(十进制整数)。(化名gid)。       egroup      EGROUP    进程的有效组ID。这将是文本组ID(如果可以获得并且字段宽度允许),否则为十进制表示。(别名组)。       eip         EIP       指令指针。       esp         ESP       堆栈指针。       etime       ELAPSED  自进程启动以来经过的时间,格式为[[DD-]hh:]mm:ss。       etimes      ELAPSED   自进程启动以来经过的时间,以秒为单位。       euid        EUID      用户ID(有效别名)。       euser       EUSER     有效用户名       f           F         与进程关联的标志,请参阅进程标志部分。(别名标志,标志)。       fgid        FGID      系统访问组ID(别名fsgid)。       fgroup      FGROUP    文件系统访问组ID       fname       COMMAND   进程可执行文件的基名称的前8个字节。此列中的输出可能包含空格。       fuid        FUID      文件系统访问用户ID(别名fsuid)。       fuser       FUSER     文件系统访问用户ID       group       GROUP     see egroup.  (alias egroup).       ignored     IGNORED   忽略信号屏蔽       ipcns       IPCNS     描述进程所属命名空间的唯一索引节点编号。       label       LABEL     安全标签,最常用于SELinux上下文数据。这是针对高安全系统中的强制访问控制(“MAC”)。       lstart      STARTED   命令启动时间       lsession    SESSION  显示进程的登录会话标识符(如果包含systemd支持)。       luid        LUID     显示与进程关联的登录ID。       lwp         LWP      可分派实体的轻量级进程(线程)ID(别名spid,tid)。更多信息见tid。       machine     MACHINE  显示分配给VM或容器的进程的计算机名称(如果已包括systemd支持)。       maj_flt     MAJFLT   此进程中发生的主要页错误数。       min_flt     MINFLT    此过程中发生的次要页面错误数。       mntns       MNTNS    描述进程所属命名空间的唯一索引节点编号。请参见名称空间(7)。       netns       NETNS     描述进程所属命名空间的唯一索引节点编号。请参见名称空间(7)。       ni          NI       不错的价值。范围从19(最好)到-20(对他人不好),请参见nice(1)。(化名尼斯)。        nlwp        NLWP     进程中的线程数(LWP)。(别名thcount)。       nwchan      WCHAN     进程休眠的内核函数的地址(如果需要内核函数名,请使用wchan)。正在运行的任务将在此列中显示破折号('-')。       ouid        OWNER     显示进程会话所有者的Unix用户标识符(如果包含systemd支持)。       pending     PENDING  挂起信号的掩饰码       pgid        PGID      进程组标识,或者等效地,进程组负责人的进程标识。(别名pgrp)。       pid         PID      表示进程ID的数字(别名tgid)。       pidns       PIDNS    描述进程所属命名空间的唯一索引节点编号。请参见名称空间(7)。       policy      POL       进程调度类       ppid        PPID     父进程ID。       pri         PRI     进程的优先级。数字越大,优先级越低。        psr         PSR     进程当前分配给的处理器。       rgid        RGID    真实组ID。       rgroup      RGROUP    真实组名。这将是文本组ID(如果可以获得并且字段宽度允许),否则为十进制表示。       rss         RSS       常驻集大小,任务已使用的非交换物理内存(以千字节为单位)。(别名rssize,rsz)。       rtprio      RTPRIO   实时优先级。       ruid        RUID     真实用户ID。       ruser       RUSER     真实用户ID       s           S         最小状态显示(一个字符)       sched       SCH       进程调度策略       seat        SEAT     显示与分配给特定工作区的所有硬件设备相关联的标识符       sess        SESS     会话ID,或者相当于会话负责人的进程ID。(别名会话,sid)。       sgi_p       P         当前正在其上执行进程的处理器。如果进程当前未运行或不可运行,则显示“*”。       sgid        SGID     已保存组ID。(别名svgid)。       sgroup      SGROUP   已保存组名。这将是文本组ID(如果可以获得并且字段宽度允许),否则为十进制表示。       size        SIZE      如果进程脏掉所有可写页,然后将其换出,则所需的大约交换空间量。这个数字很粗糙!       slice       SLICE    如果包含systemd支持,则显示进程所属的切片单元。       stackp      STACKP    程序栈底部的地址       start_time  START    进程的开始时间或日期。       stat        STAT   多字符进程状态。         suid        SUID    已保存用户ID.(别名svuid)。         supgid      SUPGID    任何组的补充ID。请参见getgroups(2)。       supgrp      SUPGRP    补充组的组名(如有)。请参见getgroups(2)。       suser       SUSER     已保存用户名。       sz          SZ        进程核心映像的物理页大小。这包括文本、数据和堆栈空间。设备映射是目前排除在外;这可能会发生变化。请参见vsz和rss。       tgid        TGID      表示任务所属线程组的数字(别名pid)。它是线程组的进程ID领导。       thcgr       THCGR     显示线程所属的控制组。       tid         TID      表示可分派实体(别名lwp,spid)的唯一编号。此值也可能显示为:进程ID(pid);       time        TIME      累计CPU时间,“[DD-]HH:MM:SS”格式。(别名cputime)。       tname       TTY      控制tty(终端)。(别名tt,tty)。       tpgid       TPGID     进程所连接到的tty(终端)上前台进程组的标识,如果进程未连接到,则为-1        trs         TRS       文本驻留集大小,用于可执行代码的物理内存量。         unit        UNIT     如果包含systemd支持,则显示进程所属的单元。       userns      USERNS    描述进程所属命名空间的唯一索引节点编号。请参见名称空间(7)。       utsns       UTSNS    描述进程所属命名空间的唯一索引节点编号。请参见名称空间(7)。       uunit       UUNIT     如果包含systemd支持,则显示进程所属的用户单元。       vsz         VSZ       进程的虚拟内存大小,以KiB(1024字节单位)为单位。设备映射当前被排除;这取决于改变。(别名)。       wchan       WCHAN    进程处于休眠状态的内核函数的名称;如果进程正在运行,则为“-”;如果进程是多线程且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获取服务名称

转载地址:https://liushiya.blog.csdn.net/article/details/109098785 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:netstat命令
下一篇:nginx1.18.0之负载均衡

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月21日 19时39分01秒