Linux

pkill 和 killall 有什麼區別?

  • October 19, 2018

我知道它pkill的過濾規則比killall. 我的問題是,有什麼區別:

pkill [signal] name

killall [signal] name

我讀過它killall更有效,並殺死與name程序匹配的所有程序和子程序(以及遞歸)。 pkill也不這樣做嗎?

pgreppkill實用程序是在 Sun 的 Solaris 7 中引入的,正如g33klord所指出的,它們將模式作為參數,與正在執行的程序的名稱相匹配。雖然pgrep僅列印匹配程序的列表,但pkill會將指定的信號(或SIGTERM預設情況下)發送到程序。當您想小心並首先查看與 匹配的程序,然後繼續使用 終止它們時,和之間的常用選項pgrep和語義會派上用場。並由procps包提供,該包還提供其他文件系統實用程序,例如、、等。pkill``pgrep``pkill``pgrep``pkill``/procpstopfreeuptime

killall命令由psmisc包提供,不同之處pkill在於,預設情況下,它在確定將發送信號的程序時與參數名稱完全匹配(最多前 15 個字元)。可以指定,選項以要求完全匹配超過 15 個字元的名稱-e。與. --exact_ 如果指定的參數包含斜杠 ( ) 字元,則該參數被解釋為文件名,並且執行該特定文件的程序將被選為信號接收者。還支持通過,選項對程序名稱進行正則表達式匹配。killall``pkill``/``killall``-r``--regexp

還有其他差異。例如,該命令具有按年齡( ,和, )killall匹配程序的選項,同時可以被告知只殺死特定終端上的程序(通過選項)。顯然,這兩個命令具有特定的利基。-o``--older-than``-y``--younger-than``pkill``-t

請注意,Unix System Vkillall的後代系統(尤其是Sun 的 SolarisIBM 的 AIXHP 的 HP-UX)上的命令會殺死特定使用者可殺死的所有程序,如果由 root 執行,則有效地關閉系統。

Linux psmisc 實用程序已移植到BSD(並在擴展Mac OS X中),因此killall遵循“按名稱殺死程序”語義。

引用自:https://unix.stackexchange.com/questions/91527