#########
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head
 

[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 ~]#

 ################
最占cpu的进程

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的进程的更多相关文章

  1. [ Linux ] 釋放記憶體指令(cache) - 轉載

    1. [Linux]釋放記憶體指令(cache) http://jeffreyy.pixnet.net/blog/post/84333764-%E3%80%90linux%E3%80%91%E9%87 ...

  2. Linux Kernel 記憶體管理機制之美<转>

    转自--http://five.rdaili.com/sohu.com.php?u=Mq3EniVnae0axim7jkGhH0IhA9uho6CQso7R1aYomXWJ9UemfwUQYmKRc8 ...

  3. JVM调优之jstack找出最耗cpu的线程并定位代码

    jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多.下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有 ...

  4. JVM调优之jstack找出最耗cpu的线程、定位代码

    jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多.下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有 ...

  5. JVM 找出最耗 cpu的线程 并打印线程栈

    监控JVM中最占cpu的线程 top -Hp pid JVM中最占cpu的线程ID -o THREAD,tid,time | awk 'BEGIN {count=0; } { if($2>0.3 ...

  6. [ Linux ] [ OS ] [ memory ] Linux 如何查看系統硬體的記憶體(RAM)資訊

    cat /proc/meminfo https://blog.longwin.com.tw/2013/05/linux-ram-memory-info-2013/

  7. 使用ps、top、ps_mem命令找出Linux中的最大内存消耗过程

    使用ps.top.ps_mem命令找出Linux中的最大内存消耗过程 2020-02-08 16:06:59作者:自力稿源:云网牛站 您可能已经看到Linux系统多次消耗过多的内存,如果是这种情况,那 ...

  8. 如何在 Linux 中找出 CPU 占用高的进程

    1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程 在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个.top 命令提供了 Linux ...

  9. 在 Linux 中找出 CPU 占用高的进程

    列出系统中 CPU 占用高的进程列表来确定.我认为只有两种方法能实现:使用 top 命令 和 ps 命令.出于一些理由,我更倾向于用 top 命令而不是 ps 命令.但是两个工具都能达到你要的目的,所 ...

随机推荐

  1. thinkphp各版本常用漏洞总结

    0x01 漏洞分析及复现 1.漏洞分析 漏洞影响范围: Thinkphp 5.1.0 - 5.1.31Thinkphp 5.0.5 - 5.0.23 漏洞产生原因: Thinkphp5.x版本(5.0 ...

  2. Dynamics Crm Plugin插件注册的问题及解决方案(持续更新。。。。。。)

    1.注册插件的时候回遇到如下提示 Plug-in assembly does not contain the required types or assembly content cannot be ...

  3. kali 2019-4中文乱码解决方法

    1.更换阿里源 编辑源,apt-get update && apt-get upgrade && apt-get clean ,更新好源和更新软件 #阿里云deb ht ...

  4. 通过Dapr实现一个简单的基于.net的微服务电商系统

    本来想在Dpar 1.0GA时发布这篇文章,由于其他事情耽搁了放到现在.时下微服务和云原生技术如何如荼,微软也不甘示弱的和阿里一起适时推出了Dapr(https://dapr.io/),园子里关于da ...

  5. python学习 -- operator.itemgetter(), list.sort/sorted 以及lambda函数

    Python 中有非常方便高效的排序函数,下面主要介绍如何sort/sorted对list,dict进行排序. 1. 用list.sort /sorted 对list of tuples中第二个值进行 ...

  6. 群晖 创建nfs 共享文件夹 k8s 使用

    1) 打开控制面板 2) 打开共享文件夹 3) 新增共享文件夹 4) 基本信息配置 2) 3) 4) 5) 点完确定,应该会退出,继续选中刚才创建的,点编辑 2) 3) 5)返回主页面,点击file ...

  7. ambari介绍及安装

    Ambari简介 Ambari概述 Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的创建.管理和监控.Ambari已支持大多数Hadoop组件,包括HDFS.Ma ...

  8. GridSearchCV 参数

    GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, c ...

  9. 对DiscuzQ的一些使用见解

    之前因为体验了DiscuzQ,在几番纠结后,把博客换成了DiscuzQ(以下简称DZQ). 在一个月的使用中,发现这个程序对于个人来说,十分不友好. 于是今天又换回了Wordpress. 在这里说一下 ...

  10. hdu2846 字典树(带id的)

    题意:      给你一些模式串,然后给你一些提问,每个提问是给你一个串,问你这个串在上 面的模式串中出现的次数. 思路:       一开始想到hash,但是因为用的是map,所以超时了,map的操 ...