Process management : ps top signal kill killall - cruisechang/wiki-linux GitHub Wiki

kill

指令

[root@linux ~]# kill pid

[root@linux ~]# kill -signal pid / kill -SIGHUP pid or kill -1 pid

參數

-l :list all signal

Common signal:

  • 1 SIGHUP 啟動被終止的程序,可讓該 PID 重新讀取自己的設定檔,類似重新啟動
  • 2 SIGINT 相當於用鍵盤輸入 [ctrl]-c 來中斷一個程序的進行
  • 9 SIGKILL 代表強制中斷一個程序的進行,如果該程序進行到一半,那麼尚未完成的部分可能會有殘存。
  • 15 SIGTERM 以正常的結束程序來終止該程序。由於是正常的終止,所以後續的動作會將他完成。
  • 18 SIGCONT Continue process if stoped.
  • 19 SIGSTOP 相當於用鍵盤輸入 [ctrl]-z 來暫停一個程序的進行

killall

指令

[root@linux ~]# killall -param processname

參數

-e, --exact:在程式名稱完全比對成功時,才中止程式。

如果程式的名稱超過 15 個字元,其餘的字元在系統中會被捨去,

這時候在預設的狀況下,killall 會把所有符合前 15 個字元的程式都中止掉,

如果加上 -e 參數的話,killall 指令就會跳過這種名稱過長的程式。

-I, --ignore-case:在比對程式名稱時,英文大小寫視為相同(ignore case)。

-i, --interactive:在中止程式之前,先以互動式的方式詢問。

-l, --list:列出所有的訊號(signal)名稱。

-r, --regexp:使用常規表示法(regular expression)指定程式名稱。

-s, --signal:指定送出的訊號(signal)。

-u, --user:只中止指定使用者所執行的程式。

-o, --older-than:指定程式的開始執行時間點,必須在此時間點之前。

-y, --younger-than:指定程式的開始執行時間點,必須在此時間點之後。

ps

指令

[root@linux ~]# ps -param

參數

-l list processes related to your bash session

aus list all processes

範例

ps -l

將目前屬於您自己這次登入的 PID 與相關資訊列示出來(只與自己的 bash 有關)

[root@study ~]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 14830 13970  0  80   0 - 52686 poll_s pts/0    00:00:00 sudo
4 S     0 14835 14830  0  80   0 - 50511 wait   pts/0    00:00:00 su
4 S     0 14836 14835  0  80   0 - 29035 wait   pts/0    00:00:00 bash
0 R     0 15011 14836  0  80   0 - 30319 -      pts/0    00:00:00 ps
  • F:表這個程序旗標 (process flags),說明這個程序的總結權限,常見號碼有: 若為 4 表示此程序的權限為 root ; 若為 1 則表示此子程序僅進行複製(fork)而沒有實際執行(exec)。

  • S:代表這個程序的狀態 (STAT),主要的狀態有:

  • R (Running):該程式正在運作中;

  • S (Sleep):該程式目前正在睡眠狀態(idle),但可以被喚醒(signal)。

  • D :不可被喚醒的睡眠狀態,通常這支程式可能在等待 I/O 的情況(ex>列印)

  • T :停止狀態(stop),可能是在工作控制(背景暫停)或除錯 (traced) 狀態;

  • Z (Zombie):僵屍狀態,程序已經終止但卻無法被移除至記憶體外。

  • UID/PID/PPID:代表『此程序被該 UID 所擁有/程序的 PID 號碼/此程序的父程序 PID 號碼』

  • C:代表 CPU 使用率,單位為百分比;

  • PRI/NI:Priority/Nice 的縮寫,代表此程序被 CPU 所執行的優先順序,數值越小代表該程序越快被 CPU 執行。詳細的 PRI 與 NI 將在下一小節說明。

  • ADDR/SZ/WCHAN:都與記憶體有關,ADDR 是 kernel function,指出該程序在記憶體的哪個部分,如果是個 running 的程序,一般就會顯示『 - 』 / SZ 代表此程序用掉多少記憶體 / WCHAN 表示目前程序是否運作中,同樣的, 若為 - 表示正在運作中。

  • TTY:登入者的終端機位置,若為遠端登入則使用動態終端介面 (pts/n);

  • TIME:使用掉的 CPU 時間,注意,是此程序實際花費 CPU 運作的時間,而不是系統時間;

  • CMD:就是 command 的縮寫,造成此程序的觸發程式之指令為何。

所以你看到的 ps -l 輸出訊息中,他說明的是:『bash 的程式屬於 UID 為 0 的使用者,狀態為睡眠 (sleep), 之所以為睡眠因為他觸發了 ps (狀態為 run) 之故。此程序的 PID 為 14836,優先執行順序為 80 , 下達 bash 所取得的終端介面為 pts/0 ,運作狀態為等待 (wait) 。』