Как убить упрямый процесс

У меня неприятный процесс, который не умрет:

ps -A | grep "nzbget" 

дает мне:

 11394 pts/3 00:00:00 nzbget 

Если я попробую:

 pkill nzbget (or 11394) 

… Я не получаю ответа, и процесс все еще жив, сверху дает мне:

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11394 asystem+ 20 0 125448 6244 4984 T 0.0 0.1 0:00.00 nzbget 

Я запускаю nzbget с помощью «nzbget -s», если я это сделаю после его запуска (и я попытался остановить его), я получаю ошибку [binding socket failed], и все, что я могу сделать, это перезагрузка.

Как я могу убить это без перезагрузки?

  • Как pkill по имени команды?
  • Как запустить telnet через SSH?
  • Как сделать сценарий инициализации «ОК», только когда все подпроцессы остановлены?
  • Почему я не должен использовать 'kill -9' / SIGKILL
  • Как я могу создать процесс, который трудно убить?
  • Убить все процессы потомства
  • Как я могу вызвать CTRL ^ C из подсказки пароля?
  • Почему kill не имеет параметра для файла, а не для номера порта?
  • 5 Solutions collect form web for “Как убить упрямый процесс”

    Вы можете использовать kill -9 11394 чтобы полностью уничтожить процесс, это вызовет следующее:

    Из 3 наиболее важных «убивающих» сигналов в командной строке Linux / UNIX :

    Ядро отпустит процесс, не сообщая о его процессе. Такое нечистое убийство может привести к потере данных. Это самый «самый жесткий», «самый грубый» и самый небезопасный сигнал об уничтожении, и его следует использовать только для того, чтобы остановить то, что кажется неостановленным.

    По мере того, как процесс останавливается * (обратите внимание на T как на выход состояния в top ), он вообще не может выполнять обработку сигналов. Таким образом, вам необходимо использовать сигнал, который не требует взаимодействия с процессом, в вашем случае SIGKILL (9), как в следующем

     kill -9 11394 

    Если вы хотите, по какой-либо причине, получить базовый дамп процесса (и ваша система настроена для этого), вместо этого вы можете использовать SIGSEGV (11). Это также не требует взаимодействия с процессом.

    * Я предполагаю, что остановлен здесь, потому что отслеживаемый процесс должен иметь возможность обрабатывать сигналы, что может привести к остановке процесса.

    Существуют различные сигналы, которые вы можете попробовать, и я уверен, что кто-то еще перечислит, но тот, который я считаю наиболее эффективным, является сигналом HUP :

     kill -hup 11394 

    Я считаю, что это работает во многих случаях, когда приложение не реагирует на какие-либо другие сигналы. В противном случае вы можете просто kill -9 , хотя это может иметь побочные эффекты, так как он просто вытаскивает вилку и не позволяет программе очищать.

    Попробуйте использовать флаг сигнала, чтобы грациозно убить процесс:

    kill -15 11394

    В случае с X-приложением мне посчастливилось использовать xkill и щелкнуть его окно, когда приложение не ответит на kill из командной строки

    Linux и Unix - лучшая ОС в мире.