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

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

ps -A | grep "nzbget" 

дает мне:

  • Отключение имен столбцов в выводах ps
  • Как я могу позволить пользователю приоритизировать процесс с отрицательной привлекательностью?
  • Apache не может разблокировать: не может выделить память
  • Использование ЦП операций файловой системы, не показанных сверху
  • Проверьте, работает ли fail2ban?
  • «Incrond dead, но суды закрыты», что это значит?
  •  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], и все, что я могу сделать, это перезагрузка.

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

  • Убейте процесс, который перезапускает
  • bash - Как заставить процесс работать во время работы Skype
  • Как получить информацию о файлах, скопированных на мой компьютер с помощью команды удаленного rsync?
  • Сценарий Bash, чтобы найти и убить процесс с определенными аргументами?
  • Как отключить генерацию дампа ядра в Centos (cPanel Server)?
  • как получить полный аргумент командной строки, переданный процессу в системах unix / linux?
  • 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 - лучшая ОС в мире.