Linux中ps命令是Process Status的缩写,ps命令用来列出Linux的进程信息,显示的结果是执行命令时的进程快照。如果要了解进程的动态信息,可以使用top命令。   ps命令可以指定不同的参数,显示不同的进程信息,可以看到哪些进程正常运行和运行状态、进程是否结束、进程是否僵死、哪些进程占用过多资源,通常搭配grep来使用。

ps [options] [--help]
linux的进程状态及ps标识(STAT):
1. S 静止状态 (sleeping) 休眠中,受阻,在等待某个条件的形成或接受到信号
2. R 正在运行 (runnable,on run queue) 正在运行或在运行队列中等待
3. D 无法中断的休眠状态,通常是I/O的进程
4. Z (zombie) 进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放
5. T 停止不执行 (traced or stopped) 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行
6. --W 没有足够的记忆体分页可分配
7. < 高优先级
8. N 低优先级
9. L 有记忆体分页分配并锁在记忆体内 (实时系统或I/O)
10. s master主进程
11. I 多线程,克隆线程
12. + 位于后台的进程组
输出格式:
USER PID PPID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

VSZ: 占用虚拟内存大小 RSS: 占用内存的大小 PPID: 父进程PID TTY 若与终端机无关,则显示 "?",另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

不常用的格式
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY	TIME CMD

F 代表这个程序的旗标 (flag), 4 代表使用者为 super user UID 程序被该 UID 所拥有 S 代表这个程序的状态 (STAT) PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍 NI 这个是 Nice 值,在下一小节我们会持续介绍 ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"

常用参数:ps命令支持三种语法格式

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

-e(A) 显示所有进程
-a 显示所有终端的进程
 a 显示当前终端的进程
-o 输出指定字段
-x 显示包含其它子进程(不以终端来区分)
-u 显示用户
-f 树状结构,表达程序间的相互关系
-i 当前终端的进程
aux 所有的内存中的进程
-axjf 列出树状的进程信息显示
常用法:
ps -aux | egrep '(nginx|php)'

找出nginx 和 php相关的进程

bug报错:
milan@vm2 shells]$ ps -u root -ax | grep php
error: must set personality to get -x option
$\color{red}{没有返回user列 不能指定-u}$