Uwaga: zanim oznaczysz to pytanie jako duplikat, pamiętaj, że wypróbowałem wszystkie rozwiązania, które mogłem uzyskać w Internecie, ale nadal nie jestem w stanie rozwiązać problemu.
Uruchomiłem demona za pomocą następującego polecenia:
rake resque:work QUEUE='*' &
Zwróciło mi to 13031
. Teraz chcę zabić tego demona i próbuję następujących poleceń:
kill -9 13031
kill 13031
Uruchomienie obu poleceń mówi: -bash: kill: (13031) - No such process
i teraz utknąłem. Nie jestem w stanie wymyślić, jak zabić demona.
pgrep
dla demona?pkill -9 rake
lub zabijesz rubinową instancję prowizji?Odpowiedzi:
Mam na to możliwą teorię.
Po uruchomieniu aplikacji jako
Aplikacja wewnętrznie działa
fork+exit
w tle.C
równoważnym kodem tego byłoby:Tak więc proces z
PID==13031
spowoduje odrodzenie procesu potomnego i sam się zakończy. Dziecko będzie nadal działać w tle i zostanie odziedziczone przez proces init (PID == 1).Możesz zobaczyć, czy tak jest, naciśnij inny enterklawisz po uruchomieniu
rake
polecenia. Czy widzisz takie odbitki?Spróbuj uruchomić
ps
w terminalu. To powinno pokazać PID procesu potomnego. Jeślikill
tak, demon powinien wyjść.źródło