Jak zabić demona w systemie Linux?


1

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 processi teraz utknąłem. Nie jestem w stanie wymyślić, jak zabić demona.


2
pgrepdla demona?
Reuben L.,

Co powiesz pkill -9 rakelub zabijesz rubinową instancję prowizji?
Hastur

Odpowiedzi:


3

Mam na to możliwą teorię.

Po uruchomieniu aplikacji jako

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

Aplikacja wewnętrznie działa fork+exitw tle.

C równoważnym kodem tego byłoby:

if(fork()) exit(0);

Tak więc proces z PID==13031spowoduje 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 rakepolecenia. Czy widzisz takie odbitki?

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

Spróbuj uruchomić psw terminalu. To powinno pokazać PID procesu potomnego. Jeśli killtak, demon powinien wyjść.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.