ps概述
Linux中的ps命令是Process Status的缩写。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等,ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 命令。
参数
-a 显示所有终端机下执行的进程,除了阶段作业领导者之外。
a 显示现行终端机下的所有进程,包括其他用户的进程。
-A 显示所有进程。
-c 显示CLS和PRI栏位。
c 列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。
-C<指令名称> 指定执行指令的名称,并列出该指令的进程的状况。
-d 显示所有进程,但不包括阶段作业领导者的进程。
-e 此参数的效果和指定"A"参数相同。
e 列出进程时,显示每个进程所使用的环境变量。
-f 显示UID,PPIP,C与STIME栏位。
f 用ASCII字符显示树状结构,表达进程间的相互关系。
-g<群组名称> 此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。
g 显示现行终端机下的所有进程,包括群组领导者的进程。
-G<群组识别码> 列出属于该群组的进程的状况,也可使用群组名称来指定。
h 不显示标题列。
-H 显示树状结构,表示进程间的相互关系。
-j或j 采用工作控制的格式显示进程状况。
-l或l 采用详细的格式来显示进程状况。
L 列出栏位的相关信息。
-m或m 显示所有的执行绪。
n 以数字来表示USER和WCHAN栏位。
-N 显示所有的进程,除了执行ps指令终端机下的进程之外。
-p<进程识别码> 指定进程识别码,并列出该进程的状况。
p<进程识别码> 此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。
r 只列出现行终端机正在执行中的进程。
-s<阶段作业> 指定阶段作业的进程识别码,并列出隶属该阶段作业的进程的状况。
s 采用进程信号的格式显示进程状况。
S 列出进程时,包括已中断的子进程资料。
-t<终端机编号> 指定终端机编号,并列出属于该终端机的进程的状况。
t<终端机编号> 此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。
-T 显示现行终端机下的所有进程。
-u<用户识别码> 此参数的效果和指定"-U"参数相同。
u 以用户为主的格式来显示进程状况。
-U<用户识别码> 列出属于该用户的进程的状况,也可使用用户名称来指定。
U<用户名称> 列出属于该用户的进程的状况。
v 采用虚拟内存的格式显示进程状况。
-V或V 显示版本信息。
-w或w 采用宽阔的格式来显示进程状况。
x 显示所有进程,不以终端机来区分。
X 采用旧式的Linux i386登陆格式显示进程状况。
-y 配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位。
无参数情况下
首先看不加参数执行ps命令会输出什么?
结果默认会显示4列信息:
PID: 运行着的命令(CMD)的进程编号
TTY: 命令所运行的位置(终端)
TIME: 运行着的该命令所占用的CPU处理时间
CMD: 该进程所运行的命令
直接执行不加任何选项的 ps 命令时,则只显示当前用户会话中打开的进程信息,这些信息在显示时未排序。
显示所有当前进程
可以使用 -a 参数,-a 代表all。同时加上x参数会显示没有控制终端的进程
ps -ax
结果中多出一列是STAT,STAT表示进程的当前状态,在Linux下进程有5种状态:
- 运行状态 ( R),正在运行或在运行队列中等待
- 睡眠状态(S),休眠中,进程在等待事件的完成
- 不可中断睡眠状态(D) ,指的并不是CPU不影响外部硬件中断,而是指进程不影响异步信号。进程通常会等 待IO的结束
- 僵尸状态(Z),进程已经终止,但进程的描述符存在,直到父进程调用wait或waitpid系统调用后释放
- 停止状态(T),进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号停止运行
其他状态还包括W(无驻留页),<(高优先级进程),N(低优先级进程),L(内存锁页)
根据进程的用户进行信息过滤
如果要查看特定用户进程的情况,我们可以使用 -u 参数。比如我们要查看用户’hxl’的进程,可以通过下面的命令:
ps -u hxl
通过cpu和内存使用来过滤进程
如果要按照 CPU 或者内存用量来筛选,我们可以使用 aux 参数,来显示全面的信息。
ps -aux
字段描述:
USER:启动该进程的用户帐号名称
%CPU:表示进程的 CPU 占用率
%MEM:表示进程的内存占用率
VSZ:表示进程虚拟内存的大小,以 KB 为单位
默认的结果集是未排好序的。可以通过 --sort命令来排序。下面是根据CPU使用率来升序排序
ps -aux --sort -pcpu
下面是根据内存使用率来升序排序
ps -aux --sort -pmem
通过进程名进行过滤
比如要找tomcat的进程的信息,可以使用下面的命令:
ps -ef |grep tomcat --color //查找到tomcat进程,并用颜色标识
找到之后我们可以使用kill -9 pid强制把他杀死。
树形的显示进程
有时候我们希望以树形结构显示进程,可以使用 -axjf 参数。或者可以使用另一个命令,pstree