Linux中的ps (Process Status)命令用来列出系统中当前运行的那些进程。
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到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
1.命令说明
名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
2.常用命令参数
-a 显示同一终端下的所有程序 -A 显示所有进程 (等价于-e) -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的进程 c 显示进程的真实名称 -C<命令> 列出指定命令的状况 显示一个名为getty的进程的信息 ps -C getty -d 显示所有进程,但省略所有的会话引线(utility) -e 等于“-A” e 显示环境变量 -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on. f 显示程序间的关系(树形结构 pstree命令也是显示树形结构) x 显示所有程序,不以终端机来区分。 -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility) -N 反向选择 -H 显示树状结构 r 显示当前终端的进程 T 显示当前终端的所有程序 u 指定用户的所有进程 -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 -p pid 父进程id -u uid or username 选择有效的用户id或者是用户名 -g gid or groupname 显示组的所有进程。 -l 长格式(有F,wchan,C 等字段) -L 参数,后面加上特定的PID 显示特定进程的线程 --lines<行数> 每页显示的行数 --width<字符数> 每页显示的字符数 --help 显示帮助信息 --version 显示版本显示 --sort -pcpu 根据pcpu排序
3.ps 显示列的意义
[root@localhost cc]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 17398 17394 0 75 0 - 16543 wait pts/0 00:00:00 bash 4 R 0 17469 17398 0 77 0 - 15877 - pts/0 00:00:00 ps F 代表这个程序的旗标 (flag), 4 代表使用者为 super user S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍 UID 程序被该 UID 所拥有 PID 就是这个程序的 ID ! PPID 则是其上级父程序的ID C CPU 使用的资源百分比 PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍 NI 这个是 Nice 值,在下一小节我们会持续介绍 ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-" SZ 使用掉的内存大小 WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作 TTY 登入者的终端机位置 TIME 使用掉的 CPU 时间。 CMD 所下达的指令为何
4. 范例
1. 用 | 管道和 more 连接起来分页查看 命令:ps -aux |more 2. 把所有进程显示出来,并输出到ps.txt文件 命令:ps -aux > ps.txt 3. 输出指定的字段 命令: ps -o pid,ppid,pgrp,tpgid,comm 4. 结合watch命令 实时显示系统的进程状态 命令: watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’