Linux(Centos 7.6)命令详解:ps

1.命令作用

报告当前进程的概览情况(report a snapshot of the current processes);此版本ps支持多种选项:

  • UNIX 选项可以进行分组,并且必须以连字符开头
  • BSD 选项也可以进行分组,但不能与连字符一起使用
  • GNU 长选项以两个连字符开头

不同类型的选项可以自由组合,但可能会出现冲突;

注意ps -aux与ps aux是不同的;由POSIX和UNIX标准规定导致:

  • 如果存在 x 用户,ps -aux打印 x 用户的所有进程,同时打印出 -a 选项的所有进程
  • 如果 x 用户不存在,ps -aux命令可能会解释为ps aux,并打印出警告信息

2.命令语法

Usage: ps [options]

3.语法格式

特性 **POSIX 标准风格(UNIX GUN)**‌ BSD 风格
选项前缀 单连字符 -(-a) 无连字符‌(如 a)
组合方式 单字母选项需分开写(-a -b) 可合并书写(ab 等效a b)
长选项 支持双连字符长选项(--help) 通常不支持长选项
典型命令 ps -ef ps aux

4.参数详解

Basic options:

  • -A, -e,所有进程(all processes)
  • -a,显示所有终端关联的所有用户进程,不包括会话领导者(如-bash进程自身)和无终端的后台守护进程(如sshd)
  • a,显示所有终端关联的所有用户进程,包含会话领导者(如-bash进程)和无终端的后台守护进程(如sshd),且额外显示状态列STAT
    • R(Running),进程正在运行或在运行队列中等待的CPU
    • S(Interruptible),可中断睡眠(等待事件完成,如I/ 响应、信号唤醒)
    • D(Uninterruptible),不可中断睡眠‌(通常因I/O阻塞,如磁盘读写),‌不响应任何信号‌(包括 kill -9)
    • T(Stopped),进程被暂停,如通过Ctrl+Z或收到SIGSTOP信号)
    • Z(Zombie),僵尸进程‌(进程已终止,但父进程未回收资源)
    • X(Dead),进程完全死亡(极少出现)
    • 附加修饰符s(会话领导者)、l(多线程)、+(前台进程组)
  • -d,显示除会话领导者以外的所有进程
  • -N, --deselect,否定选择;如 ps -e -N --tty pts/0 (显示排除终端pts/0关联的所有进程;如 ps -N -u root (显示非root用户的所有进程);如 ps -N -U 1000 (排除UID为1000的进程)
  • r,仅显示处于运行状态的进程;即仅显示STAT状态为R(Running)的进程;排除S(Sleeping)、Z(Zombie)等非活跃进程
  • T,当前终端上的所有进程
  • x,显示所有与当前用户终端关联的进程,包括会话领导者、后台守护进程、无终端进程

Selection by list(指定多个选项时,可逗号或空格分隔,形如-p 123 4567和-u root,nobody):

  • -C <command>,显示指定命令名称的相关进程,如 ps -fC postmaster
  • -G, --Group <GID>,正真的用户组ID和名称
  • -g, --group <group>,会话或者有效的组名称
  • -p, p, --pid <PID>,指定进程ID显示进程;如-p 123 4567
  • --ppid <PID>,指定父进程ID显示进程
  • -q, q, --quick-pid <PID>,指定进程ID显示进程(快速模式)
  • -s, --sid <session>,指定会话ID显示进程
  • -t, t, --tty <tty>,指定总端名称显示进程
  • -u, U, --user <UID>,有效的用户ID和名称(执行进程的权限用户);如-u root,nobody
  • -U, --User <UID>,正真的用户ID和名称(发起进程的实际用户)

Output formats:

  • -F,额外全格式
  • -f,全格式,包含命令列
  • f, --forest,以ASCII图形格式显示进程树
  • -H,显示进程层次结构
  • -j,作业格式(jobs format)
  • j,BSD作业控制格式(BSD job control format)
  • -l,长格式
  • l,BSD长格式
  • -M, Z,添加安全数据(用于 SELinux)
  • -O <format>,预先设置好默认列
  • O <format>,与-O一样,但具有BSD特性
  • -o, o, --format <format>,用户自定义格式(user-defined format)
  • s,信号格式(signal format)
  • u,用户导向格式(user-oriented format)
  • v,虚拟内存格式(virtual memory format)
  • X,注册格式(register format)
  • -y,不显示标志,显示RSS与地址(与-l一起使用)
  • --context,显示安全上下文(适用于 SELinux)
  • --headers,重复标题行,每页一行
  • --no-headers,完全不要打印标题行(页眉)
  • --cols, --columns, --width <num>,设定屏宽
  • --rows, --lines <num>,设置屏幕高度,与--headers一起使用可以查看其效果

Show threads:

  • H,显示STAT和完成COMMAND名称(as if they were processes)
  • -L,可能包含LWP和NLWP列(possibly with LWP and NLWP columns)
  • -m, m,进程之后(after processes)
  • -T,可能带有SPID列(possibly with SPID column)

Miscellaneous options:

  • -c,使用-l选项显示调度类信息
  • c,显示真实命令名称
  • e,显示执行命令后的环境状态
  • k, --sort,指定排序顺序为:[+|-]key[,[+|-]key[,...]]
  • L,显示格式说明符
  • n,显示数字uid和wchan
  • S, --cumulative,包括一些死子进程数据
  • -y,不显示标志,显示RSS(仅带-l)
  • -V, V, --version,显示版本信息并退出
  • -w, w,不限制输出宽度
  • --help <simple|list|output|threads|misc|all>,显示帮助并退出

5.常用用例

5.1.输出信息解释

**说明:**以下输出字段包含了常见的一些输出字段,主要是ps -ef 及 ps aux输出的字段内容

  • USER,用户名称
  • UID,用户ID
  • PID,进程ID
  • PPID,PID的父进程ID
  • C,进程CPU使用百分比
  • %CPU,进程当前消耗的CPU资源百分比
  • %MEM,进程使用的物理内存占系统总内存的百分比
  • STIME,进程启动时间(格式为HH:MM或日期<Aug08>,短时间进程可能显示为?)
  • TTY,关联的终端设备;?表示无终端,如守护进程
  • VSZ,进程申请的虚拟内存总量(包括共享库和未使用的预留内存)
  • RSS,进程实际占用的物理内存(不含共享库)
  • CMD,进程执行的命令(简单名称)
  • COMMAND,进程执行的完整命令
  • START,进程启动时间(格式为HH:MM或日期<Aug08>)
  • TIME,进程累计占用CPU的时间,格式是HH:MM:SS(非进程实际运行时长)
  • STAT:
    • R,正在运行或可运行(在运行队列)
    • S,可中断休眠(等一个时间来完成)
    • D,不可中断休眠(通常为 I/O 操作)
    • Z,僵尸进程
    • T,因作业控制信号而停止
    • X,已杀死(应该永远不会看到)
    • I,(大写i)空闲内核线程
    • t,在跟踪期间被调试器停止
    • W,分页(内核2.6.x版本后无效)
    • <,高优先级
    • N,低优先级
    • L,内存有被锁定的页(实时和自定义IO)
    • s,是会话领导
    • l,(小写L)是多线程的(使用CLONE_THREAD,类似NPTL pthreads)
    • +,在前台进程组里

5.2.常用进程查看命令

复制代码
1.使用标准语法查看系统上的每个进程
ps -e         # 打印所有进程信息
ps -ef        # 以全格式打印所有进程信息
ps -eF        # 以额外全格式打印所有进程信息
ps -ely       # 以长格式打印,但不显示标志列(第一列)

2.使用BSD语法查看系统上的每个进程
ps ax         # 显示所有终端关联的所有用户进程;显示所有与当前用户终端关联的进程,包括会话领导者、后台守护进程、无终端进程
ps axu        # 以上信息以用户导向格式打印出来(输出的列信息不同)

3.打印进程树
ps -ejH       # 作业控制格式和层次格式打印所有进程信息
ps axjf       # 作业控制格式和层次格式打印所有终端关联的所有用户信息,包括会话领导者、后台守护进程、无终端进程

4.获取有关线程的信息
ps -eLf       # 可能包含LWP和NLWP列的全格式打印所有进程信息
ps axms       # 进程之后信号格式打印所有终端关联的所有用户信息,包括会话领导者、后台守护进程、无终端进程

5.获取安全信息,label是安全相关的信息
ps -eo euser,ruser,suser,fuser,f,comm,label   # 用户自定义输出列名称
ps axZ
ps -eM

6.查看每个以root(真实或有效的用户ID)用户身份运行的进程
ps -U root -u root u

7.查看使用用户定义格式的所有进程
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

8.只打印syslogd的进程号
ps -C postmaster -o pid=

9.只打印PID 42的名称
ps -q 19804 -o comm=

10.按CPU、MEM排序
ps aux --sort=+pcpu             # 按照CPU从小到大(+)排序;与ps aux k +pcpu 相同
ps aux --sort=-pmem             # 按照内存从大到小(-)排序;与ps aux k -pmem 相同

11.页眉标题行显示
ps aux --headers                # 分页打印页眉标题行,每页打印一行页眉标题,方便阅读
ps aux --no-headers             # 不打印首行的页眉标题行

5.3.配合其他命令一起使用

复制代码
ps aux --sort=+pcpu | tail -n 10       # 打印CPU从小到大排序的最后10行
ps aux --sort=-pmem | head -n 10       # 打印内存从大到小排序的前面10行
ps -ef | grep postgres                 # 打印postgres相关进程
相关推荐
工程师老罗3 小时前
龙芯2k0300 PMON取消Linux自启动
linux·运维·服务器
千百元3 小时前
centos如何删除恶心定时任务
linux·运维·centos
oMcLin5 小时前
如何在Manjaro Linux上配置并优化Caddy Web服务器,确保高并发流量下的稳定性与安全性?
linux·服务器·前端
济6175 小时前
linux(第七期)--gcc编译软件-- Ubuntu20.04
linux·运维·服务器
corpse20105 小时前
Linux监控软件Monitorix 安装部署
linux·安全
coding消烦员5 小时前
在 Windows 内网搭建 Git 仓库:共享普通仓库 vs 中心 bare 仓库
windows·git
wdfk_prog6 小时前
[Linux]学习笔记系列 -- [fs]super
linux·笔记·学习
姚青&6 小时前
四.文件处理命令-文本编辑
linux
oMcLin6 小时前
如何在 Red Hat Linux 8 上实现 Kubernetes 自定义资源管理器(CRD)扩展,支持微服务架构
linux·架构·kubernetes
济6176 小时前
linux(第十一期)--Makefile 语法简述-- Ubuntu20.04
linux