【问题标题】:My bash script won't execute commands after kill command我的 bash 脚本在 kill 命令后不会执行命令
【发布时间】:2018-11-27 13:41:04
【问题描述】:

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

【问题讨论】:

  • 你的脚本名称是什么?你为什么用kill -9
  • 我的脚本是 stoplogstash.sh,我正在使用 kill 强制停止进程。
  • 给你的脚本起一个不包含“logstash”的名字:-)
  • 您的脚本名称使 grep 返回它自己的 PID。请将其 grep 为 '[ ]logstash[ ]'

标签: linux bash shell logstash kill


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    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."
    

    问候!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      相关资源
      最近更新 更多