Как убить демона в Linux?

970
Arslan Ali

Примечание. Прежде чем пометить этот вопрос как дубликат, обратите внимание, что я перепробовал все решения, которые мог получить в Интернете, но все же не смог решить проблему.

Я запустил демон с помощью следующей команды:

rake resque:work QUEUE='*' & 

Это вернуло меня 13031. Теперь я хочу убить этого демона, и я пробую следующие команды:

kill -9 13031 kill 13031 

Запуск обеих команд говорит: -bash: kill: (13031) - No such processи теперь я застрял. Я не могу понять, как убить демона.

1
`pgrep` для демона? Reuben L. 7 лет назад 2
Что насчет `pkill -9 rake` или чтобы убить инстанс ruby ​​из ruby? Hastur 7 лет назад 0

1 ответ на вопрос

3
anishsane

У меня есть возможная теория для этого.

Когда вы запускаете приложение как

$ rake resque:work QUEUE='*' & [1] 13031 

Приложение внутренне делает fork+exit, чтобы работать в фоновом режиме.

C кодовый эквивалент этого будет:

if(fork()) exit(0); 

Таким образом, процесс с PID==13031порождает дочерний процесс и завершается сам. Ребенок будет продолжать работать в фоновом режиме и будет унаследован процессом init (PID == 1).
Вы можете увидеть, если это так, нажмите другую enterклавишу после запуска rakeкоманды. Вы видите такие отпечатки?

[1]+ Done rake resque:work QUEUE='*' 

Попробуйте запустить psв терминале. Это должно показать PID дочернего процесса. Если killэто так, демон должен выйти.

Похожие вопросы