ps

ps (全称:process status)用于显示当前进程的状态,与windows 的任务管理器类似。ps 命令列出的是当前那些进程的快照,就是执行 ps 命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。要对进程进行监测和控制,就必须要了解当前进程的情况,也就是需要查看当前进程。而 ps 命令就是最基本,同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。总之大部分信息都是可以通过执行该命令查看。

进程有5种状态

进程状态

含义

对应ps命令的状态码

运行

正在运行或在运行队列中等待

R 运行 runnable (on run queue)

中断

休眠中, 受阻, 在等待某个条件的形成或接受到信号

S 中断 sleeping

不可中断

收到信号不唤醒和不可运行, 进程必须等待直到有中断发生

D 不可中断 uninterruptible sleep (usually IO)

僵死

进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放

Z 僵死 a defunct (”zombie”) process

停止

进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行

T 停止 traced or stopped

ps命令支持三种语法格式

  1. Unix风格的参数,前面加单破折线
  2. BSD风格的参数,前面不加破折线
  3. GNU风格的长参数,前面加双破折线

语法

ps [options]
  • -a 显示同一终端下的所有程序
  • -A 显示所有进程
  • -u 显示用户
  • -x 显示无控制终端的进程
  • -e 显示所有用户的进程此参数的效果和指定a参数相同
  • -f 用ASCII字符显示树状结构,表达程序间的相互关系

案例

显示指定用户信息

ps -u root

显示所有进程信息,连同命令行

ps -ef

说明:

  • UID:启动这些进程的用户
  • PID:进程的进程ID
  • PPID:父进程的进程号(如果该进程是由另一个进程启动的)
  • C:进程生命周期中的CPU利用率
  • STIME:进程启动时的系统时间
  • TTY:进程启动时的终端设备
  • TIME:运行进程需要的累计CPU时间
  • CMD:启动的程序名称

ps 与 grep 常用组合用法,查找指定进程

ps -ef | grep java

列出目前所有的正在内存当中的程序

ps -aux

说明

  • USER: 启动进程的用户
  • PID: 进程的ID
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的记忆体使用率
  • VSZ: 占用的虚拟记忆体大小
  • RSS: 占用的记忆体大小
  • TTY: 进程启动时的终端设备
  • STAT: 行程的状态
  • D: 无法中断的休眠状态 (通常 IO 的进程)
  • R: 正在执行中
  • S: 静止状态
  • T: 暂停执行
  • Z: 不存在但暂时无法消除
  • W: 没有足够的记忆体分页可分配
  • <: 高优先序的进程
  • N: 低优先序的进程
  • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 进程开始时间
  • TIME: 运行进程需要的累计CPU时间
  • COMMAND: 所执行的命令