Linux 用 ps 與 top 指令找出最耗費 CPU 與記憶體資源的程式最占cpu的进程
[root@localhost ~]# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head
PID PPID %MEM %CPU CMD
11533 11358 1.1 70.1 mate-panel
11562 11358 8.8 47.5 /usr/bin/caja -n
11500 11358 17.1 29.2 /usr/libexec/mate-settings-daemon
11880 11358 55.3 26.3 /usr/libexec/deja-dup/deja-dup-monitor
11346 1 0.4 10.1 /usr/bin/Xvnc :22 -auth /home/cs2c/.Xauthority -desktop localhost.localdomain:22 (cs2c) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -httpd /usr/share/vnc/classes -pn -rfbauth /home/cs2c/.vnc/passwd -rfbport 5922 -rfbwait 30000
14359 14303 0.0 10.1 top
11366 1 0.1 3.5 /bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
12195 1 0.4 3.4 /opt/kingsoft/wps-office/office6/wps -shield -multiply -automation -nosplash -rpcclientport=/tmp/wpsrpc-1570671007-1303676176 -wait=name,/tmp/wpsrpc-1570671007-1993262559;mode,window
12197 1 0.4 3.3 /opt/kingsoft/wps-office/office6/wpp -shield -multiply -automation -nosplash -rpcclientport=/tmp/wpsrpc-1570671007-1409416479 -wait=name,/tmp/wpsrpc-1570671007-1756499731;mode,window
#########
# top -b -o +%CPU | head -n 22
top - 21:02:00 up 2:34, 9 users, load average: 0.10, 0.08, 0.11
Tasks: 190 total, 1 running, 189 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.2 us, 2.2 sy, 0.0 ni, 94.4 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3764128 total, 1585344 free, 1056656 used, 1122128 buff/cache
KiB Swap: 8388592 total, 8388592 free, 0 used. 2093248 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8277 root 20 0 20768 3456 2480 R 12.5 0.1 0:00.03 top
2263 root 20 0 225248 67008 33248 S 6.2 1.8 2:55.64 Xorg
2934 cs2c 20 0 370128 33984 25440 S 6.2 0.9 1:17.02 nm-applet
1 root 20 0 8288 5104 3520 S 0.0 0.1 0:08.16 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:01.34 rcu_preempt
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_sched
11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
12 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/1
16 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/2
17 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/2
##########
[root@localhost ~]# top -b -o +%MEM | head -n 22
top - 21:02:21 up 2:34, 9 users, load average: 0.07, 0.07, 0.11
Tasks: 190 total, 1 running, 189 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.2 us, 2.2 sy, 0.0 ni, 94.4 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3764128 total, 1584064 free, 1057904 used, 1122160 buff/cache
KiB Swap: 8388592 total, 8388592 free, 0 used. 2092032 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3809 cs2c 20 0 2048432 276368 131472 S 0.0 7.3 1:35.16 firefox
3884 cs2c 20 0 1648624 227712 83984 S 0.0 6.0 4:01.08 Web Content
3102 cs2c 20 0 687184 143808 100256 S 0.0 3.8 0:16.76 wps
3122 cs2c 20 0 672624 143216 99824 S 0.0 3.8 0:04.76 et
3120 cs2c 20 0 663232 135136 96224 S 0.0 3.6 0:06.21 wpp
3411 cs2c 20 0 659552 131904 94048 S 0.0 3.5 0:05.20 wps
3415 cs2c 20 0 639296 131120 94416 S 0.0 3.5 0:05.75 et
3413 cs2c 20 0 647072 125040 89808 S 0.0 3.3 0:06.36 wpp
2496 cs2c 20 0 606848 74176 39840 S 0.0 2.0 1:22.02 mutter
2263 root 20 0 224224 67008 33248 S 0.0 1.8 2:56.27 Xorg
3998 cs2c 20 0 411600 66016 32448 S 0.0 1.8 0:56.40 xchm
3499 cs2c 20 0 397072 55088 35056 S 0.0 1.5 0:15.05 xchm
2556 cs2c 20 0 1011520 52944 32272 S 0.0 1.4 0:09.02 caja
3586 cs2c 20 0 391040 48208 33120 S 0.0 1.3 0:08.45 xchm
3484 cs2c 20 0 394928 45216 31552 S 0.0 1.2 0:02.22 xchm
[root@localhost ~]#
ps
指令輸出
若要找出系統上最耗費 CPU 的程式,也是使用類似的指令,只是在排序時,將排序的欄位換成 CPU 使用量:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
#########################
top
指令輸出
若要找出最耗費 CPU 資源的行程,則改用 CPU 使用量來排序即可:
top -b -o +%CPU | head -n 17
###
# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 4034 4.1 0.0 0 0 ? S 18:34 5:53 [kworker/0:0]
cs2c 3884 2.7 5.8 1643504 219424 ? Sl 18:33 3:58 /usr/lib64/firefox/firefox -contentproc -greomni /usr/lib64/firefox/omni.ja -appomni /usr/lib64/firefox/browser/omni.ja -appdir /usr/lib64/firefox/browser 3809 tab
root 2263 1.9 1.7 224208 67024 tty7 Ssl+ 18:28 2:52 /usr/libexec/Xorg -core -background none :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
cs2c 3809 1.0 7.3 2048432 276368 ? Sl 18:32 1:33 /usr/lib64/firefox/firefox
root 74 0.9 0.0 0 0 ? S 18:27 1:27 [kworker/0:2]
cs2c 2496 0.9 1.9 606848 74176 ? Sl 18:28 1:20 mutter
cs2c 2934 0.8 0.9 370128 33984 ? Sl 18:28 1:15 nm-applet
cs2c 3998 0.6 1.7 411600 66016 ? Sl 18:33 0:56 xchm /home/yixuan/20191009chm/MySQL分布式.chm
cs2c 3453 0.4 0.0 20976 3664 pts/0 S+ 18:28 0:38 top
cs2c 2699 0.2 0.3 263888 14480 ? Sl 18:28 0:18 /usr/libexec/mate-panel/notification-area-applet
這裡介紹如何在 Linux 中使用 ps
與 top
指令列出系統上最吃 CPU 與記憶體的程式。
作為 Linux 系統的管理者,時常都需要查看系統的負載狀況,如果系統中出現不正常的程式,吃掉太多的 CPU 或記憶體資源,就會影響系統的效能,太嚴重的話甚至會造成當機等狀況。
查閱系統負載(loading)與行程(process)的狀況最常用的就是 ps
與 top
這兩個指令,以下我們示範如何利用這兩個指令撰寫簡單的指令稿,自動找出系統上最耗費資源的程式。
ps
指令
這行指令可利用 ps
指令列出行程的一些基本資訊,按照每個行程所使用的記憶體排序後,列出排名最前面的幾個行程,也就是列出系統上最耗費記憶體的程式:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
這裡的 -e
參數是代表輸出所有行程的資訊,而 -o
參數則是用來指定輸出欄位用的,後面接著所有想要輸出的欄位名稱,這裡我們讓 ps
輸出以下幾個欄位:
pid
:行程 ID(process ID)。ppid
:父行程 ID(parent process ID)。cmd
:程式名稱。%mem
:記憶體使用量(百分比)。%cpu
:CPU 使用量(百分比)。
而 --sort
參數則是指定排序的依據欄位,預設會依照數值由小到大排序,若要由大到小的方式排序的話,可以在欄位名稱前加上一個負號。以這個例子來說,我們將排序的欄位指定為 -%mem
,這樣就可以依照記憶體使用量,從大到小排序。
最後將 ps
的輸出以 Linux 管線(pipe)導向至 head
,只保留前 10 行的資料,其餘的都丟棄,以下是輸出的結果。
PID PPID CMD %MEM %CPU
2124 1278 /usr/lib/chromium-browser/c 25.0 14.4
1446 1278 /usr/lib/chromium-browser/c 21.5 15.4
1253 1 /usr/lib/chromium-browser/c 19.2 13.0
1328 1278 /usr/lib/chromium-browser/c 7.6 2.9
1392 1278 /usr/lib/chromium-browser/c 7.6 0.5
732 669 /usr/bin/X :0 -seat seat0 - 5.7 2.0
1060 1 /usr/lib/arm-linux-gnueabih 1.8 0.0
1086 758 pcmanfm --desktop --profile 1.5 0.2
1085 758 lxpanel --profile LXDE-pi 1.5 0.3

ps
指令輸出
若要找出系統上最耗費 CPU 的程式,也是使用類似的指令,只是在排序時,將排序的欄位換成 CPU 使用量:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
輸出為:
PID PPID CMD %MEM %CPU
1446 1278 /usr/lib/chromium-browser/c 33.8 19.6
1253 1 /usr/lib/chromium-browser/c 19.6 12.1
2124 1278 /usr/lib/chromium-browser/c 20.5 11.2
2555 1 gvim -f 2.5 6.3
1328 1278 /usr/lib/chromium-browser/c 6.1 3.0
732 669 /usr/bin/X :0 -seat seat0 - 7.1 2.2
1392 1278 /usr/lib/chromium-browser/c 6.7 0.5
1085 758 lxpanel --profile LXDE-pi 1.5 0.3
1060 1 /usr/lib/arm-linux-gnueabih 1.3 0.1

ps
指令輸出
top
指令
top
指令是一個互動式(interactive)的工具,可以顯示即時的系統負載狀態,而它也可以用於指令稿中,輸出各種系統資訊。
這行指令可將系統行程以記憶體的使用賴排序後,以 batch 模式輸出報表,並且只保留前 10 個最耗費記憶體的行程:
top -b -o +%MEM | head -n 17
其中 -b
參數是 batch 模式的意思,而 -o
參數則是設定以記憶體用量來排序行程,最後面的 head -n 17
則是篩選 top
輸出的文字內容,只保留前 17 行,剩餘的內容則捨棄。輸出會類似這樣:
top - 14:54:24 up 7 min, 3 users, load average: 0.99, 1.52, 0.87
Tasks: 164 total, 1 running, 163 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.0 us, 2.7 sy, 0.1 ni, 68.2 id, 11.9 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 947732 total, 757336 used, 190396 free, 9892 buffers
KiB Swap: 1914876 total, 8588 used, 1906288 free. 288704 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1392 pi 20 0 557272 206424 90776 S 0.0 21.8 1:46.69 chromium-b+
1223 pi 20 0 674816 194156 126276 S 0.0 20.5 1:42.47 chromium-b+
1490 pi 20 0 459804 164732 76728 S 5.6 17.4 0:44.62 chromium-b+
732 root 20 0 245288 84204 52640 S 0.0 8.9 0:15.90 Xorg
1353 pi 20 0 366756 82720 47504 S 0.0 8.7 0:07.21 chromium-b+
1357 pi 20 0 355952 77080 55684 S 0.0 8.1 0:09.30 chromium-b+
1293 pi 20 0 354048 73844 51024 S 0.0 7.8 0:13.32 chromium-b+
1084 pi 20 0 105612 29380 24928 S 0.0 3.1 0:02.43 lxpanel
1243 pi 20 0 189852 28780 23760 S 0.0 3.0 0:00.16 chromium-b+
1086 pi 20 0 147124 26976 24256 S 0.0 2.8 0:01.63 pcmanfm

top
指令輸出
若要找出最耗費 CPU 資源的行程,則改用 CPU 使用量來排序即可:
top -b -o +%CPU | head -n 17
輸出會類似這樣:
top - 15:12:19 up 25 min, 4 users, load average: 1.66, 1.43, 1.08
Tasks: 173 total, 1 running, 172 sleeping, 0 stopped, 0 zombie
%Cpu(s): 13.4 us, 1.8 sy, 0.1 ni, 79.0 id, 5.6 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 947732 total, 870680 used, 77052 free, 5588 buffers
KiB Swap: 1914876 total, 148740 used, 1766136 free. 267360 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1959 pi 20 0 327404 49012 22340 S 107.0 5.2 0:02.75 java
1490 pi 20 0 459804 99192 49040 S 5.9 10.5 1:26.10 chromium-b+
1809 pi 20 0 576268 162008 55228 S 5.9 17.1 0:57.49 chromium-b+
1969 pi 20 0 7052 2380 2060 R 5.9 0.3 0:00.03 top
1 root 20 0 22948 2768 2120 S 0.0 0.3 0:04.85 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.14 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
6 root 20 0 0 0 0 S 0.0 0.0 0:02.67 kworker/u8+
7 root 20 0 0 0 0 S 0.0 0.0 0:01.41 rcu_sched
通常如果發現異常的程式佔用了太多的 CPU 或記憶體,最好的處理方式就是把這些程式正常關閉,如果程式當掉無法關閉的話,就可以使用 kill
或 killall
這類的指令,中止不正常程式的執行,由於上面的報表中都有每個程式的 PID,所以使用 PID 來中止特定的程式是最直接的方式。
假設我們想要中止的程式其 PID 是 1959
,首先我們會用一般的方式嘗試讓程式正常結束:
kill 1959
如過執行這行之後,沒有效果的話,再嘗試強制關閉程式:
kill -9 1959
這兩種 kill
指令是最常見的處理方式。
Linux 用 ps 與 top 指令找出最耗費 CPU 與記憶體資源的程式最占cpu的进程的更多相关文章
- [ Linux ] 釋放記憶體指令(cache) - 轉載
1. [Linux]釋放記憶體指令(cache) http://jeffreyy.pixnet.net/blog/post/84333764-%E3%80%90linux%E3%80%91%E9%87 ...
- Linux Kernel 記憶體管理機制之美<转>
转自--http://five.rdaili.com/sohu.com.php?u=Mq3EniVnae0axim7jkGhH0IhA9uho6CQso7R1aYomXWJ9UemfwUQYmKRc8 ...
- JVM调优之jstack找出最耗cpu的线程并定位代码
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多.下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有 ...
- JVM调优之jstack找出最耗cpu的线程、定位代码
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多.下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有 ...
- JVM 找出最耗 cpu的线程 并打印线程栈
监控JVM中最占cpu的线程 top -Hp pid JVM中最占cpu的线程ID -o THREAD,tid,time | awk 'BEGIN {count=0; } { if($2>0.3 ...
- [ Linux ] [ OS ] [ memory ] Linux 如何查看系統硬體的記憶體(RAM)資訊
cat /proc/meminfo https://blog.longwin.com.tw/2013/05/linux-ram-memory-info-2013/
- 使用ps、top、ps_mem命令找出Linux中的最大内存消耗过程
使用ps.top.ps_mem命令找出Linux中的最大内存消耗过程 2020-02-08 16:06:59作者:自力稿源:云网牛站 您可能已经看到Linux系统多次消耗过多的内存,如果是这种情况,那 ...
- 如何在 Linux 中找出 CPU 占用高的进程
1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程 在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个.top 命令提供了 Linux ...
- 在 Linux 中找出 CPU 占用高的进程
列出系统中 CPU 占用高的进程列表来确定.我认为只有两种方法能实现:使用 top 命令 和 ps 命令.出于一些理由,我更倾向于用 top 命令而不是 ps 命令.但是两个工具都能达到你要的目的,所 ...
随机推荐
- [Fundamental of Power Electronics]-PART I-3.稳态等效电路建模,损耗和效率-3.5/3.6 示例:Boost变换器中包含的半导体传导损耗/要点小结
3.5 示例:Boost变换器中包含的半导体传导损耗 作为最后一个示例,让我们考虑对图3.22所示的Boost变换器中的半导体传导损耗进行建模.功率损耗的另一个主要来源是半导体器件的正向电压降引起的传 ...
- python中栈的实现
栈是一种线性数据结构,用先进后出或者是后进先出的方式存储数据,栈中数据的插入删除操作都是在栈顶端进行,常见栈的函数操作包括 empty() – 返回栈是否为空 – Time Complexity : ...
- libnet的使用详解
最近搬砖需要对libnet进行介绍在这里对知识进行汇总. 1.libnet简介 在libnet出现以前,如果要构造数据包并发送到网络中,程序员要通过一些复杂的接口来处理.libnet的出现,为程序员提 ...
- 【CTF】2019湖湘杯 miscmisc writeup
题目来源:2019湖湘杯 题目链接:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=1&id= ...
- JavaScript遍历对象方法总结
前言 本篇内容将按照下图展开: 遍历Object Object最常见的遍历方法方法就是使用for...in...,但其有一定的局限性,比如只能遍历可枚举属性.虽然Object无法直接使用for循环和f ...
- 《疯狂Kotlin讲义》读书笔记6——函数和Lambda表达式
函数和Lambda表达式 Kotlin融合了面向过程语言和面向对象语言的特征,相比于Java,它增加了对函数式编程的支持,支持定义函数.调用函数.相比于C语言,Kotlin支持局部函数(Lambda表 ...
- 解决github不能访问的问题
亲测有效,授之以鱼不如授之以渔,网上看了很多方法,也试着做了,很多都是治标不治本,最后找到个靠谱的方式:利用DNS查询工具,找到最快的IP地址,然后把host地址换成查询到的结果,方法如下: 在系统的 ...
- day-25-类的继承顺序-父类对子类的约束-多态-队列和栈
一.类的继承顺序 只要继承object类就是新式类 不继承object类的都是经典类 在python3 中所有的类都继承object类,都是新式类 在python2 中不继承object的类都是经典类 ...
- 1037 Magic Coupon
The magic shop in Mars is offering some magic coupons. Each coupon has an integer N printed on it, m ...
- MSSQL数据库清理Log 压缩数据库日志文件
dump transaction 数据库名 with no_log go dbcc shrinkdatabase(数据库名)