Как сделать так, чтобы процесс был убит? (используя команду kill) - PullRequest
1 голос
/ 03 мая 2011

Я пытаюсь убить процесс командой kill в linux.(не используя -9 в качестве аргумента)

Мне нужно убедиться, что процесс действительно убит.Насколько я знаю, команда kill выполняется асинхронно, и до ее завершения может потребоваться некоторое время.

Мне нужно убедиться, что после запуска команды kill мой процесс умер с помощью bash

Можете ли вы помочь?

Спасибо !!!

Ответы [ 3 ]

4 голосов
/ 03 мая 2011

Предполагая, что $PID содержит pid вашего процесса, вы можете сделать что-то вроде этого:

kill "$PID"

while [ $(kill -0 "$PID") ]; do
  sleep 1
done

echo "Process is killed"
4 голосов
/ 03 мая 2011

Уничтожение процесса с сигналом 0 проверит, работает ли этот процесс, и фактически не уничтожит его. Просто проверьте код возврата.

0 голосов
/ 03 мая 2011

kill используется для отправки сигналов процессам. Это не обязательно завершает процесс (но обычно делает). kill без явно упомянутого сигнала отправит SIGTERM в процесс. Действие по умолчанию на SIGTERM состоит в том, чтобы завершить процесс, но процесс может установить другой обработчик сигнала, и процесс может не завершиться.

Что, я думаю, вам нужно, это способ выяснить, обработал ли процесс сигнал или нет. Это можно сделать с помощью ps s $PID. Если в качестве маски ожидания отображается 0 s, процесс получил сигнал и обработал его.

...