说明:
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而 ps命令 Process Status 就是最基本,同时也是非常强大的进程查看命令.
使用该命令 ,可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.
总之大部分信息都是可以通过执行该命令得到的.
ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的。如果想对进程时间监控,应该用 top 工具。
如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态
grep命令
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
使用示例:
查看redis 进程的情况:
ps -aux|grep redis
ps aux输出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
格式说明:
- USER: 行程拥有者
- PID: pid 进程的id
- %CPU: 占用CPU的 使用率
- %MEM: 占用记忆体的使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态,linux的进程有5种状态:
- D 不可中断 uninterruptible sleep (usually IO)
- R 运行 runnable (on run queue)
- S 中断 sleeping
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
ps 命令常用参数:
- ps a 显示现行终端机下的所有程序,包括其他用户的程序。
- ps -A 显示所有程序。
- ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
- ps -e 此参数的效果和指定"A"参数相同。
- ps e 列出程序时,显示每个程序所使用的环境变量。
- ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
- ps -H 显示树状结构,表示程序间的相互关系。
- ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
- ps s 采用程序信号的格式显示程序状况。
- ps S 列出程序时,包括已中断的子程序资料。
- ps -t 指定终端机编号,并列出属于该终端机的程序的状况。
- ps u 以用户为主的格式来显示程序状况。
- ps x 显示所有程序,不以终端机来区分。
ps是显示当前状态处于running的进程,grep表示在这些里搜索,而ps aux是显示所有进程和其状态。
常用举例:
查看amoeba的进程
$ ps aux | grep amoeba
杀死进程
$ kill -9 pid