我的bash脚本在执行kill命令后将不执行命令

时间:2018-11-27 13:41:04

标签: linux bash shell logstash kill

我正在尝试制作一个bash脚本,该脚本杀死一个进程,然后将其做其他事情。

PID=`ps -ef | grep logstash | grep -v "grep" | awk '{print $2}'`
echo $PID
kill -9 $PID
echo "logstash process is stopped"
rm /home/user/test.csv
echo "test.csv is deleted."
rm /home/example.txt
echo "example.txt is deleted."

运行脚本时,它会按预期终止logstash,但也会终止整个脚本。

我也尝试过:kill -9 $(ps aux | grep 'logstash' | awk '{print $2}')。 使用此命令,我的脚本也将终止。

2 个答案:

答案 0 :(得分:1)

您的脚本名称似乎包含“ logstash”。

因此,PID会填充2个值,并且kill命令也会杀死您的脚本。

重命名脚本名称中不带“ logstash”应解决此问题。

答案 1 :(得分:0)

这应该可以解决您的问题:

PID=$( ps -ef | grep -E '[ ]logstash[ ]' | grep -v "grep" | head -1 | awk '{print $2}')
echo $PID
kill -9 $PID
echo "logstash process is stopped"
rm /home/user/test.csv
echo "test.csv is deleted."
rm /home/example.txt
echo "example.txt is deleted."

致谢!