毫無疑問進程管理是很重要的,當咱們的操做系統很忙碌,運行的進程不少,可是可能有好幾個進程是沒有用的,那麼咱們是否是要找出這樣的進程而後結束它。若是有不少個沒用的進程一直在內存中,致使內存使用量過大,後面的進程可能就會沒有辦法執行。
例如,當咱們要定時執行某一個腳本任務,可是,若是腳本執行完進程並無退出,而你的執行頻率又很快,幾分鐘或者幾秒鐘,那可就悲劇了,走過的坑。。。node
ps命令是process status的縮寫,它會列出內存中正在運行的程序的運行狀況的快照。ps命令能夠跟不少參數來過濾咱們須要查看的某個或者某些進程。linux
ps -aux
ps -u root
ps -o pid
按內存佔用量排序操作系統
ps auxw --sort=rss
ps auxw --sort=rss|head -10
ps -aux|grep node
%MEM: 佔用的物理內存百分比 VSZ: 佔用的虛擬內存量 RSS: 佔用的實際內存量
相對於ps選取某個時間點的進程狀態,top能夠持續的檢測進程的運行狀況。
top後面常跟的幾個參數code
-d後面能夠跟描述,表示多長時間更新一次時間。對象
-n表示須要進行幾回top輸出。排序
-p查看某個PID的運行狀況。進程
top在執行過程當中能夠執行一些命令。圖片
P 以CPU的使用資源多少排序顯示。內存
N 以PID來排序。資源
M 之內存的使用排序。
k 給予某個PID一個信號。
r 重置某個PID的nice值。
q 離開top。
咱們不單單要查看進程,並且要對進程進行管理,那麼進程之間是如何相互管理的呢,細想下來,只要涉及到管理,確定要發出指令,對程序的管理也不例外。經過賦予某個進程一個信號告訴進程你想要作的事就能夠啦。咱們能夠經過kill -l查看全部的指令及其代號。
圖片描述
這裏咱們列出主要的幾個:
sighup啓動被終止的命令。(1)
sigint終止一個進程, 相似於鍵盤輸入ctrl + c。(2)
sigkill強制終端一個進程,若是該進程運行到一半,也會中止。(9)
sigterm正常結束一個進程。(15)
sigstop至關於鍵盤輸入ctrl + z來暫停一個進程的進行。(17)
下面補充一下ctrl[C, Z]的區別。
ctrl-c 發送 SIGINT 信號給前臺進程組中的全部進程。經常使用於終止正在運行的程序。
ctrl-z 發送 SIGTSTP 信號給前臺進程組中的全部進程,經常使用於掛起一個進程。
而命令的執行是須要有一個通知者和接受對象的
kill -signal PID kill命令會將signal這個指令發送給該PID。
free
-a列出系統相關信息,包括如下信息都列出來。
-s系統內核名稱。
-r內核的版本。
-m系統硬件名稱。
-i硬件平臺。