Killall не работает, если я вызываю его из скрипта bash

Я начинаю 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 ответ

Поскольку вы запускаете tcpdump из того же скрипта, нет необходимости killall,

Если вы запускаете несколько фоновых процессов, используйте массив, например так:

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

... позже вы можете убить эти PID:

kill "${pids[@]}"
Другие вопросы по тегам