我正在尝试制作一个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}')
。
使用此命令,我的脚本也将终止。
答案 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."
致谢!