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

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

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], и все, что я могу сделать, это перезагрузка.

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

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 из командной строки

  • процесс убийства bash по вызову
  • Убивать процесс, когда ПИД постоянно меняется
  • процесс pkill, содержащий специальные символы
  • Как убить все процессы, не имеющие определенного родительского процесса?
  • Как закрыть все процессы без перезагрузки машины?
  • Остановить задачу на основе вывода
  • Исправлена ​​ошибка «firefox уже запущена» в Linux
  • сценарий оболочки для автоматического уничтожения процессов, соответствующих определенным критериям
  • Убить все процессы потомства
  • Убийство кометы зомби
  • Как я могу убить виджеты оболочки gnome?
  • Как я могу вызвать CTRL ^ C из подсказки пароля?
  • Linux и Unix - лучшая ОС в мире.