如果我从bash脚本中调用它,Killall就无法工作

时间:2015-12-21 15:50:22

标签: bash shell scripting taskkill ash

我在脚本中启动tcpdump我也会从同一个脚本中删除它。所以我目前正在使用killall命令:脚本从udev规则执行:这是应该终止tcpdump的部分:另外我也是使用-s SIDKILL,因为我已经知道这也有帮助。

killall没有终止tcpdump的问题是什么。当我手动启动脚本时,一切正常。

 if [[ "$pid1" != "" ]];then
          sudo killall -s SIGKILL tcpdump
          sh /tmp/scripts/autoumount.sh &
          sudo kill -9 $$
          echo "autodump stopped"

1 个答案:

答案 0 :(得分:1)

由于您从同一个脚本启动tcpdump,因此无需killall

如果您正在运行多个后台进程,请使用数组,如下所示:

pids=( )                 # initialize empty array
tcpdump & pids+=( "$!" ) # extend said array

...稍后,你可以杀死那些PID:

kill "${pids[@]}"