Awk
用於殺死除使用者擁有的程序之外的程序的 Shell 腳本
我正在尋找一些幫助來創建腳本來殺死程序,但如果它們由 root 擁有,則返回錯誤消息。首先,我想說我是這方面的初學者。目前我有: kill
ps -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)。