三招找出主機上哪個處理程序在耗費你的資源
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、執行多久和什麼指令等等。(用 Q 或 Ctrl + C 可以離開 top
介面。)
如果你覺得這樣不好看、不好操作,可以考慮安裝 htop
。功能極似 top
,但是是彩色的、可以上線左要調整,也可以直接用 F6 去排序不同的指標的程序。
直接下常用指令
如果不喜歡看到完整的介面,想要下一個指令就解決的話,這邊有一些常用的指令。
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邦幫忙。