убивая процесс убивает другие процессы - PullRequest
1 голос
/ 13 января 2010

У меня есть сценарий оболочки, который я написал, который выполняет следующие шаги в рамках конечного цикла:

Я порождаю процесс и жду его завершения. Если он не завершится в течение 40 секунд, я выполняю:

kill -SIGTERM pid

Иногда я обнаружил, что даже при выполнении pid kill -SIGTERM процесс не реагирует на уничтожение. В этом случае, после дополнительных 40 секунд ожидания его самоубийства, я выполняю:

kill -9 pid

В большинстве случаев этого достаточно, и я перехожу к следующей итерации этих шагов.

ПРОБЛЕМА: Иногда, выполняя описанный выше набор шагов, я получаю не только процесс, который я намеревался уничтожить, но и оболочку, запускающую скрипт, который выполняет цикл этих шагов.

ВОПРОС: Чем это вызвано?

1 Ответ

1 голос
/ 13 января 2010

Две возможности:

1.) Вы передаете PID оболочки или скрипта вместо дочернего процесса

2.) Ваша оболочка / скрипт просто нормально завершает работу, потому что с мертвым дочерним процессом больше ничего не остается.

...