要點(diǎn):
-
$ ps aux
查看系統(tǒng)所有進(jìn)程 -
$ ps aux | grep <name>
使用grep過濾輸出 -
$ kill -15 <pid>
終止進(jìn)程 -
$ pkill -15 -f spring
關(guān)閉所有名為"spring"的進(jìn)程
以下摘自Ruby on Rails Tutorail
在 Unix 類系統(tǒng)中,例如 Linux 和 macOS,用戶和系統(tǒng)執(zhí)行的任務(wù)都在包裝良好的容器中,這個(gè)容器叫進(jìn)程(process)。
若想查看系統(tǒng)中的所有進(jìn)程,可以執(zhí)行 ps 命令,并指定 aux 選項(xiàng):
$ ps aux
若想過濾輸出的進(jìn)程,可以使用 Unix 管道(|)把 ps 命令的結(jié)果傳給 grep,進(jìn)行模式匹配:
$ ps aux | grep spring
ubuntu 12241 0.3 0.5 589960 178416 ? Ssl Sep20 1:46 spring app | sample_app | started 7 hours ago
顯示的結(jié)果中有進(jìn)程的部分詳細(xì)信息,其中最重要的是第一個(gè)數(shù)字,即進(jìn)程的 ID(PID)。若要終止不 想要的進(jìn)程,可以使用 kill 命令,向指定的 PID 發(fā)送 Unix 終止信號(hào)(恰巧是 15):
$ kill -15 12241
關(guān)閉單個(gè)進(jìn)程,例如不再使用的 Rails 服務(wù)器進(jìn)程(可執(zhí)行 ps aux | grep server 命令找到 PID),我推薦使用這種方法。不過,有時(shí)最好能批量關(guān)閉進(jìn)程名中包含特定文本的進(jìn)程,例如關(guān)閉系統(tǒng)中所有的 spring 進(jìn)程。對(duì) Spring 來說,首先應(yīng)該嘗試使用 spring 命令關(guān)閉進(jìn)程:
$ spring stop
不過,有時(shí)這么做沒用,此時(shí)可以使用 pkill 命令關(guān)閉所有名為“spring”的進(jìn)程:
$ pkill -15 -f spring
只要發(fā)現(xiàn)表現(xiàn)異常,或者進(jìn)程靜止了,最好執(zhí)行 ps aux 命令看看怎么回事,然后再執(zhí)行 kill -15 <pid>
或 pkill -15 -f <name> 命令關(guān)閉進(jìn)程