Awk

用於殺死除使用者擁有的程序之外的程序的 Shell 腳本

  • December 6, 2015

我正在尋找一些幫助來創建腳本來殺死程序,但如果它們由 root 擁有,則返回錯誤消息。首先,我想說我是這方面的初學者。目前我有: killps -aef | grep $1 | grep -v grep | awk '{print $2}'可以殺死作為參數的程序名稱。但我不能讓它像一個 if 語句一樣工作,如果所有者是 root 就阻止它殺死一個程序。

pgrep -u 0 "$1" && echo "Can't kill process: Owned by root" || killall "$1"

pgrep -u 0只搜尋UID 0(root) 擁有的程序。如果未找到該程序(因此它不存在或未以 root 身份執行),prgep 將返回一個非零返回碼並killall執行該命令。如果 prgrep 返回零返回碼,將執行 echo,但不執行 killall 命令。

嘗試

ps -aef | grep $1 | egrep -v grep | awk '$1 != "root" {print $2}'

該語句$1 != "root"將過濾掉root擁有的程序。您可能仍然會在守護程序上遇到錯誤(例如www-data,如果您正在執行 apache)。

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