使用bash检查进程是否在脚本中运行的最简单,最可靠的方法是什么?
以下是我所拥有的:
x=`ps aux | grep firefox | grep -v grep | awk '{print $2 }'`
if [ $x > 0 ];
then kill -9 $x
echo "Firefox terminated"
else echo "bla bla bla"
fi
答案 0 :(得分:3)
if x=$(pgrep firefox); then
kill -9 $x
# ...
fi
如果你只想杀死这个过程:
pkill -9 firefox
答案 1 :(得分:2)
也许您可以使用pgrep
来执行此操作?
来自man page:
pgrep查看当前正在运行的进程,并将符合选择条件的进程ID列为stdout。
示例:
$> pgrep firefox | xargs -r kill -9
在此示例中,kill
命令使用进程的pid。 -r
xargs
选项只有在有pid时才允许执行kill
命令。
答案 2 :(得分:1)
怎么样:
pkill &>/dev/null firefox && echo "ff terminated" || echo "no ff PIDs"
这里不需要-9
信号;)
答案 3 :(得分:0)
的pidof:
x=`pidof firefox`
if [[ $x > 0 ]];
then
kill -9 $x
echo "Firefox terminated"
else
echo "bla bla bla"
fi