1、功能简介

    报告当前进程

[root@vms002 /]# whatis ps
ps (1)               - report a snapshot of the current processes.   #报告当前进程的快照
ps (1p)              - report process status   #报告进程状态

2、命令语法

[root@vms002 /]# man ps
SYNOPSIS
       ps [options]

3、常用选项

选项

含义

-A

列出所有的进程

-w

显示加宽,可以显示较多的信息

-a

显示现行终端机下的所有进程,包括其他用户的进程

-u

以用户为主的进程状态

-x

通常与a这个参数一起使用,可列出较完整信息

-r

只显示正在运行的进程

-h

不显示标题

-e

显示所有进程,环境变量

-f

全格式

-l

长格式

--help

显示帮助信息

--version

显示版本信息

常用选项组合:

    1)ps -ef  #用标准的格式显示进程

    2)ps -aux  #用BSD的格式来显示

4、ps -ef和ps -aux格式详解

    1)ps -ef 标准格式

[root@vms001 /]# ps -ef|head -3
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 6月04 ?       00:00:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
root          2      0  0 6月04 ?       00:00:00 [kthreadd]

格式详解:

UID
PID PPID C STIME TTY TIME CMD
用户ID 进程ID 父进程ID 进程占用CPU的百分比 进程启动的时间 该进程在哪个终端上运行,若与终端无关,则显示?若为pts/0等,则表示由网络连接主机进程 该进程实际使用CPU运行的时间 命令的名称和参数

    2)ps -aux BSD格式

[root@vms001 /]# ps -aux|head -3
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.2  60592  7936 ?        Ss   6月04   0:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
root          2  0.0  0.0      0     0 ?        S    6月04   0:00 [kthreadd]

格式详解:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
用户名
进程的ID
进程占用的CPU百分比 进程占用内存的百分比 该进程使用的虚拟内存量(KB) 该进程占用的固定内存量(KB) 该进程在哪个终端上运行,若与终端无关,则显示?若为pts/0等,则表示由网络连接主机进程 进程的状态
该进程实际使用CPU运行的时间
COMMAND
命令的名称和参数

5、Linux上的进程状态

进程状态 ps命令对应的状态码 含义
运行 R运行runnable(on run queue) 正在运行或在运行队列中等待
中断 S中断sleeping 休眠中,受阻,在等待某个条件的形成或接受到信号
不可中断 D不可中断uninterruptible sleep (usually IO) 收到信号不唤醒和不可运行,进程必须等待直到有中断发生
僵死 Z僵死a defunct ("zombie") process 进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放
停止 T停止traced or stopped 进程收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU信号后停止运行

其中STAT状态位常见的状态字符有

D      //无法中断的休眠状态(通常 IO 的进程); 

R      //正在运行可中在队列中可过行的; 

S      //处于休眠状态; 

T      //停止或被追踪; 

W      //进入内存交换 (从内核2.6开始无效); 

X      //死掉的进程 (基本很少见); 

Z      //僵尸进程; 

<      //优先级高的进程 

N      //优先级较低的进程 

L      //有些页被锁进内存; 

s      //进程的领导者(在它之下有子进程); 

l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 

+      //位于后台的进程组;