Linux ps命令

PS,是Linux系统命令之一,是在Linux中是查看进程的命令。ps查看正处于Running的进程,ps aux查看所有的进程。

查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想不断更新查看的这个状态,可以使用top命令。

进程状态

而linux的进程有5种状态

  • 运行状态(正在运行或在运行队列中等待[就绪队列])
  • 中断状态(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • 不可中断状态(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • 僵死状态(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • 停止状态(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

状态码

PS工具标识进程的5种状态码

  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

ps命令支持三种使用的语法格式

  • UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符
  • BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符
  • GNU 风格的长选项,选项前有两个“-”连字符

这几种风格可以混用,但是可能会发生冲突。

结果显示列信息

  • USER:该进程是由哪个用户产生的
  • PID:运行着的命令(CMD)的进程编号
  • PPID:父进程的 ID
  • %CPU:该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
  • %MEM:该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
  • TTY:命令所运行的位置(终端)
  • TIME:运行着的该命令所占用的CPU处理时间
  • START:该进程的启动时间
  • CMD:该进程所运行的命令

相关参数

-e 显示所有进程。

-f 全格式。

-h 不显示标题。

-l 长格式。

-w 宽输出。

a 显示终端上的所有进程,包括其他用户的进程。

r 只显示正在运行的进程。

x 显示没有控制终端的进程。

O[+|-] k1 [,[+|-] k2 [,…]] 根据SHORT KEYS、k1、k2中快捷键指定的多级排序顺序显示进程列表。

–sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键。“+”字符是可选的,因为默认的方向就是按数字升序或者词典顺序。比如: ps -jax -sort=uid,-ppid,+pid。

–help 显示帮助信息。

–version 显示该命令的版本信息。

ps -ef 与 ps aux

Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。

ps -ef 是用标准的格式显示进程的、其格式如下:

Linux ps命令

ps aux 是用BSD的格式来显示、其格式如下:

Linux ps命令