Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?讨论这个问题,要追溯到Unix系统中的两种风格
| System V 风格 | SD 风格 |
|---|---|
ps -ef | ps aux |
1.CPU占用最多的前10个进程:
ps auxw | head -1; ps auxw | sort -rn -k3 | head -10
2.内存消耗最多的前10个进程
ps auxw | head -1;ps auxw | sort -rn -k4 | head -10
3.虚拟内存使用最多的前10个进程
ps auxw | head -1; ps auxw | sort -rn -k5 | head -10
ps auxw 参数:
- u:以用户为主的格式来显示程序状况。
- x:显示所有程序,不以终端机来区分。
- w:采用宽阔的格式来显示程序状况。
ps auxw | head -1 输出表头.
sort -rn -k5
-n 是按照数字大小排序。
-r 是以相反顺序。
-k 是指定需要排序的栏位。
USER //用户名
%CPU //进程占用的CPU百分比
%MEM //占用内存的百分比
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)resident set size
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间
tty (Teletype terminal )与进程关联的终端
串行端口终端(/dev/ttySn)
伪终端(/dev/pty/)
控制终端(/dev/tty)
控制台终端(/dev/ttyn, /dev/console)
虚拟终端(/dev/pts/n)
去掉x参数的结果
ps auw | head -1; ps auw|sort -rn -k4 | head -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
xiaofu 25732 0.0 0.1 199360 29024 pts/0 Sl+ 09:53 0:00 mongo 192.168.1.251:29017
xiaoxie 853 0.0 0.0 105464 992 pts/1 T 11:38 0:00 /usr/bin/less -is
xiaoxie 849 0.0 0.0 106080 684 pts/1 T 11:38 0:00 sh -c (cd "/usr/share/man" && (echo ".ll 14.8i"; echo ".nr LL 14.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/ps.1.gz'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -is)
xiaoxie 848 0.0 0.0 106080 1292 pts/1 T 11:38 0:00 sh -c (cd "/usr/share/man" && (echo ".ll 14.8i"; echo ".nr LL 14.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/ps.1.gz'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -is)
xiaoxie 845 0.0 0.0 101144 1036 pts/1 T 11:38 0:00 man ps
xiaoxie 28600 0.0 0.0 105464 988 pts/1 T 10:56 0:00 /usr/bin/less -is
xiaoxie 28596 0.0 0.0 106080 688 pts/1 T 10:56 0:00 sh -c (cd "/usr/share/man" && (echo ".ll 14.8i"; echo ".nr LL 14.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/ps.1.gz'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -is)
xiaoxie 28595 0.0 0.0 106080 1296 pts/1 T 10:56 0:00 sh -c (cd "/usr/share/man" && (echo ".ll 14.8i"; echo ".nr LL 14.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/ps.1.gz'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -is)
xiaoxie 28592 0.0 0.0 101144 1032 pts/1 T 10:56 0:00 man ps
xiaoxie 28202 0.0 0.0 108320 1988 pts/1 Ss 10:41 0:00 -bash
stat取值含义
D //无法中断的休眠状态(通常 IO 的进程);
R //正在运行可中在队列中可过行的;
S //处于休眠状态;
T //停止或被追踪;
W //进入内存交换 (从内核2.6开始无效);
X //死掉的进程 (基本很少见);
Z //僵尸进程;
< //优先级高的进程
N //优先级较低的进程
L //有些页被锁进内存;
s //进程的领导者(在它之下有子进程);
l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ //位于后台的进程组;
本文详细解析了Linux系统中ps命令的使用方法,包括ps-ef和psaux的区别,以及如何利用这些命令查看CPU、内存和虚拟内存占用最多的前10个进程。同时,文章还解释了ps命令的参数含义及其在不同场景下的应用。
4955

被折叠的 条评论
为什么被折叠?



