三招找出主機上哪個處理程序在耗費你的資源

Linux 的指令介面中不像 Windows,東西卡住叫工作管理員出來關掉沒有回應的程式就好。在 Linux 上該做什麼才能知道誰在耗用資源呢?

三招找出主機上哪個處理程序在耗費你的資源

Linux 的指令介面中不像 Windows,東西卡住叫工作管理員出來關掉沒有回應的程式就好。在 Linux 上該做什麼才能知道誰在耗用資源呢?

列出目前的處理程序

通常我們可以用 ps aux 來列出所有的處理程序,輸出可能像這樣子(節錄):

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6 159924  6456 ?        Ss   Sep25   0:23 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Sep25   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        I<   Sep25   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        I<   Sep25   0:00 [mm_percpu_wq]
root         7  0.0  0.0      0     0 ?        S    Sep25   0:13 [ksoftirqd/0]
noob     25816  0.7  4.5 772704 45696 ?        Ssl  10:06   0:00 node /home/noob/koa-api-example/server_db.js
root     25881  0.0  0.5  72296  5604 ?        Ss   10:08   0:00 sshd: [accepted]
sshd     25882  0.0  0.3  72296  3080 ?        S    10:08   0:00 sshd: [net]
noob     25892  0.0  0.3  40092  3544 pts/0    R+   10:08   0:00 ps aux
noob     27419  0.0  0.4  76636  4736 ?        Ss   Oct01   0:00 /lib/systemd/systemd --user

如果你只想要找 node 的處理程序,可以搭配 grep 來使用:

ps aux | grep node

這樣就會只列出包含 node 的那行:

noob     25816  0.4  4.5 772704 45504 ?        Ssl  10:06   0:01 node /home/noob/koa-api-example/server_db.js
noob     25928  0.0  0.1  14856  1028 pts/0    S+   10:10   0:00 grep --color=auto node

指令版的工作管理員

首先你可以下 top 指令,就可以看到預設像是工作管理員的介面。依序可以看到他的 Process ID、執行的使用者、用了多少 CPU、Memory、執行多久和什麼指令等等。(用 QCtrl + C 可以離開 top 介面。)

top

如果你覺得這樣不好看、不好操作,可以考慮安裝 htop。功能極似 top,但是是彩色的、可以上線左要調整,也可以直接用 F6 去排序不同的指標的程序。

htop

直接下常用指令

如果不喜歡看到完整的介面,想要下一個指令就解決的話,這邊有一些常用的指令。

uptime 可以看到目前電腦已經開機多久,有幾個使用者登入,平均電腦負載多少。

10:03:47 up 13 days,  8:43,  2 users,  load average: 0.00, 0.00, 0.00

free -h 則可以看到現在電腦可用記憶體有多少:

              total        used        free      shared  buff/cache   available
Mem:           985M        239M        118M        640K        627M        583M
Swap:            0B          0B          0B

如果你在工作管理員已經看到要砍的 Process,可以直接下 kill [pid] 以砍掉它。例如你要砍掉 pid=104 的程式的話,可以下這個指令:

kill 104

假設你要砍掉你已經知道 node 在背後跑,但不知道它的 pid 的話,可以用這個指令查詢 pid:

pgrep node

得到 pid 以後可以搭配 kill 指令去砍 Process。但其實你更可以直接這樣操作:

pkill node

這樣就會直接砍掉名為 node 的 Process 了。

本篇文章同步發表在 iT邦幫忙

我們正降低廣告比例以提升閱讀體驗。如果你喜歡這篇文章,不妨按下 Like 按鈕分享到社群,以行動支持我寫更多文章。 當然,你也可以 點此用新臺幣支持我,或 點此透過 BTC、ETH、USDC 等加密貨幣支持我
分享到: