Dlaczego to polecenie „zabicia” wylogowuje mnie z komputera?


40

Następujące polecenie mnie wylogowuje ( nie uruchamiaj tego polecenia):

kill -9 -1

Nie rozumiem dlaczego.

Czy ktoś może mi to wyjaśnić?

Odpowiedzi:


71

Składnia jest następująca kill SIGNAL PID.

Ta -9opcja określa, że SIGKILLsygnał powinien zostać wysłany (natychmiast zakończ proces docelowy), a określenie PID -1jest skrótem dla „wszystkich procesów oprócz siebie i init”.

Ponieważ nie używasz sudo(i prawdopodobnie nie masz uprawnień roota), natychmiast zabija to wszystkie procesy, na które masz pozwolenie zabijania - całą sesję, a więc wylogowujesz się.


9
I zauważ, że jeśli uruchomisz to polecenie w sudo, sudo kill -9 -1komputer uruchomi się ponownie
— Anwar,

Czy to naprawdę się zrestartuje? Wygląda na to, że po prostu się zawiesi.
— user606723,

@ user606723 proces inicjowania nie zostanie zakończony i może zdecydować, co (jeśli w ogóle) zrobić z wszystkimi innymi procesami, które zostały zakończone.
— Random832

3
@Anwar niekoniecznie uruchomi się ponownie, spowoduje przejście do uruchomienia init, który może, ale nie musi, odrodzić powłokę lub przywrócić inne usługi.
— mikebabcock

27

próbować

man kill

aby uzyskać wyjaśnienie polecenia zabicia.

to mówi:

PID -1 jest wyjątkowy; wskazuje wszystkie procesy oprócz samego procesu kill i init.

i

PRZYKŁADY

zabij -9 -1

 Kill all processes you can kill.

Mam nadzieję, że rozumiesz, dlaczego Twój komputer wyloguje Cię po zakończeniu wszystkich procesów. Porzuciłeś wszystko.

Mam nadzieję że to pomoże.


18
+1 za wskazanie man. „Naucz rybę, jak to robić mani karmisz go przez całe życie”. (
— Kalambur

7

Podajesz -1jako identyfikator procesu: ze strony killman:

 A  PID of -1 is special; it indicates all processes except the
 kill process itself and init.
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.