转自:https://www.cnblogs.com/peida/archive/2012/12/19/2824418.html
https://www.jianshu.com/p/943b90150c10
1.简介
ps命令是Process Status的缩写。
ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
区别是:ps是一次性查看,top是长时间的观察进程的变化,是动态连续的。
运行一次ps命令结果如下:
PID TTY TIME CMD 18313 pts/0 00:00:00 bash 18347 pts/0 00:00:00 ps
不加任何参数输出上面,而且每次结果不同,(是当前用户目前运行的进程?),默认输出的是四列
1.1 参数格式
ps命令支持三种使用的语法格式:
- UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符;
- BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符;
- GNU 风格的选项,选项前有两个“-”连字符;
ps -a 显示所有终端下执行的进程,包含其他用户的进程 ps -A 显示所有进程 ps -e 和-A功能一样 ps -H 显示树状结构,表示程序间的相互关系 ps -f 全格式显示进程 ps a 显示当前终端下执行的进程 ps c 显示进程的真实名称 ps e 列出程序所使用的环境变量 ps f 用ASCII字符显示树状结构,表达程序间的相互关系 ps x 显示所有进程,无论是否运行在终端上 ps u 显示用户相关的进程或者与用户相关的属性 ps r 只显示正在运行的进程
2.用法
2.1 ps -u username
查看指定用户的进程信息,通过用户过滤进程信息:
通过管道和less命令连接起来,使得查看更加简洁
ps -u root |less
解释:
- PID: 该进程的id
- TTY:登入者的终端机位置
- TIME:占用CPU的时间
- CMD:命令(产生当前进程的命令)
2.2 ps -aux
列出目前所有的正在内存当中的程序:
命令参数解释:
- a 显示所有进程、-a 显示同一终端下的所有程序
- u 指定用户的所有进程
- x调整输出格式
输出解释:
- %CPU:该 process 使用掉的 CPU 资源百分比
- %MEM:该 process 所占用的物理内存百分比
- VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
- RSS :该 process 占用的固定的内存量 (Kbytes)
- STAT:该程序目前的状态,主要的状态有:D:不可中断(等待磁盘IO)、R运行、S中断(等待调用)、T停止、Z僵死。其中<表示优先级高的进程
- TIME :该 process 实际使用 CPU 运作的时间
2.3 ps -ef
输出了进程所属的UID、父进程PID
2.4 ps -l
将属于本用户本次登入PID用到的相关信息展示出来:
- F表示程序的旗标 (flag), 4 代表使用者为 super user
- S程序的状态 (STAT),D:不可中断、R运行、S中断、T停止、Z僵死
- C:CPU 使用的资源百分比
- PRI 是 Priority (优先执行序) 的缩写,进程的优先级
- NI 是 Nice 值
- ADDR 是 kernel function,指出该程序在内存的哪个部分。
- SZ 使用掉的内存大小
- WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
3.其他
3.1 查看进程运行时间
ps -p PID -o lstart,etime
通过控制输出-o
3.2 与sort连用
ps -aux --sort -%cpu | less
按照占用cpu的降序排列。
--sort=[+|-] key
按内存降序:
$ ps -aux --sort -%mem | less
3.3 根据进程查看线程
ps -L PID
3.4 与watch动态观察
watch -n 1 'ps -aux --sort -%mem | head 10'
1s刷新一次