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ć?

hytromo
źródło

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ę.

chronitis
źródło
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.

mondjunge
źródło
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.
Tom Regner
źródło