Skip to content

Linux 查看进程命令 ps aux 和 ps ef

ps auxps -ef 的区别

讨论这个问题,要追溯到 Unix 系统中的两种风格,System V 风格和 BSD 风格,ps aux 最初用到 Unix Style 中,而 ps -ef被用在 System V Style 中,两者输出略显不同。现在大部分 Linux 系统都是可以同时使用这两种方式的。

  1. ps -ef 是用标准的格式显示进程的,其格式如下

    列名 含义
    UID 用户 ID,但输出的是用户名
    PID 进程 ID
    PPID 父进程 ID
    C 进程占用 CPU 的百分比
    STIME 进程启动到现在的时间
    TTY 该进程在哪个终端上运行,若与终端无关,则显示 ?,若为 pts/0 等,则表示由网络连接主机进程
    CMD 命令的名称和参数
  2. ps aux 是用 BSD 的格式来显示进程的,其格式如下

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

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

    • D 无法中断的休眠状态(通常 IO 的进程)
    • R
    • S 处于休眠状态
    • T 停止或被追踪
    • W 进入内存交换(从内核 2.6 开始无效)
    • X 死掉的进程(基本很少见)
    • Z 僵尸进程
    • < 优先级高的进程
    • N 优先级低的进程
    • L 有些页被锁进内存
    • s 进程的领导者(在它之下有子进程)
    • l 多线程,克隆线程(使用 CLONE_THREAD,类似 NPTL phtreads)
    • + 位于后台的进程组

收藏