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[@]}"