1

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

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

rake resque:work QUEUE='*' &

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

kill -9 13031
kill 13031

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

1 ответ1

3

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

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

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

Приложение внутренне выполняет fork+exit для запуска в фоновом режиме.

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

if(fork()) exit(0);

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .