Разница в использовании kill -9 с kill SIGUSR2

Какая разница в работе с использованием формата команды kill, в каком сценарии какой из них использовать.

kill -9 process-id
kill SIGUSR2 process-id

1 ответ

Решение

Если вы хотите отправить SIGUSR2 для процесса, вы бы использовали либо:

kill -SIGUSR2 $pid
kill -USR2 $pid
kill -10 $pid   # This will vary with platform

Если вы хотите отправить SIGKILL для процесса, вы бы использовали либо:

kill -SIGKILL $pid
kill -KILL $pid
kill -9 $pid

Не уверен, как ответить на ваш вопрос о "какой сценарий". Если вы хотите отправить USR2Затем вы используете одну из трех предыдущих команд. Если вы хотите отправить KILLВы используете один из последних. Как правило, вы хотите избежать использования KILLкак процесс, который получает KILL не может убирать за собой. С другой стороны, много программного обеспечения написано плохо и может быть остановлено только через SIGKILL, Обычно считается более вежливым, чтобы отправить TERM, затем подождите некоторое время перед отправкой TERM второй раз, затем снова подождите перед отправкой KILL, USR2 как правило, полезно только для программ, которые ожидают этого и ответят некоторым полезным способом. Если программа не ожидает сигнала и не было предпринято никаких действий, чтобы игнорировать его, поведение по умолчанию завершается.

Обратите внимание, что конкретный номер сигнала SIGUSR2 варьируется. В зависимости от платформы это могут быть 10, 12, 31 и, возможно, многие другие значения. Лучше избегать установки значения явно. Единственными стандартизированными номерами сигналов являются 1,2,3,6,9,14 и 15, поэтому 9 всегда SIGKILL, но SIGUSR2 может (и имеет!) меняться.

Другие вопросы по тегам