[英]How can you use the unix kill command silently in a bash script?
我正在嘗試檢查特定進程是否正在運行,如果正在運行,請嘗試將其殺死。
到目前為止,我已經提出了以下建議:
PID=$(ps aux | grep myprocessname | grep -v grep | awk '{print $2}')
if [ -z $PID];
then
echo Still running on PID $PID, attempting to kill..
kill -9 $PID > /dev/null
fi
但是,當我運行它時,得到以下輸出:
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
靜默終止UNIX上正在運行的進程的最佳方法是什么?
答案更容易
程序“ killall”幾乎是所有發行版的一部分。
例子:
killall name_of_process &> /dev/null
killall -9 name_of_process &> /dev/null
(( $? == 0)) && echo "kill successful";
現在也有“ pkill”和“ pgrep”示例:
pkill -9 bash &> /dev/null
(( $? == 0)) && echo "kill successful";
例:
for pid in $(pgrep bash); do
kill -9 $pid &> /dev/null
(( $? == 0)) && echo "kill of $pid successful" || echo "kill of $pid failed";
done
最后,在示例中使用“ ps”時,這是一種無需“ grep”,“ grep -v”和“ awk”的使用情況的更好方法:
PIDS="$(ps -a -C myprocessname -o pid= )"
while read pid; do
kill -9 $pid &> /dev/null
((!$?)) && echo -n "killed $pid,";
done <<< "$p"
列出的所有方法都比長管-管-管imho更好
嘗試在您的情況下if [ X$PID != X ]
。 這是檢查字符串是否為空的通常習慣用法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.