Nie sugeruję wykonywania następujących czynności, jeśli nie jesteś zmuszony z naprawdę szczególnych powodów:
kill -SEGV 1 # should generate a core dumps and kernel panic
kill -ABRT 1 # should generate a core dumps and kernel panic
kill -9 1 # On old systems worked nowadays not
Jest szorstki, brutalny i można go uznać za ścisły odpowiednik odłączenia przewodu zasilającego ...
Poprawny sposób jest shutdown -h now
z sudo
przed gdy są potrzebne.
Może powinienem powiedzieć w sposób zgodny z prawem ; patrz poniżej lub lepiej tl; dr.
Niektóre słowa więcej , aka historii, Rozdział I
Na początku było init i będzie aż do samego końca.
Cały Linux zależy od miłości i troski o pliku init [ 1 ] [ 2 ] . Niemniej jednak i nie bez pewnej niewdzięczności był czas, w którym dobry użytkownik root może zdradzić tę miłość i nagle kill
zainicjować z niezaprzeczalną ( -9
) kolejnością.
( Księga etykiety nakazuje hrabiom, książętom i markizom wywoływać użytkowników przed a sudo
).
Następnie niektórzy czarodzieje rzucili urok, aby chronić init (z Księgi man 2 init
)
Jedynymi sygnałami, które można wysłać do ID procesu 1, procesu init, są te, dla których init wyraźnie zainstalował procedury obsługi sygnałów. Ma to na celu zapewnienie, że system nie zostanie przypadkowo wyłączony.
(Nasz raport szpiegów [ U1 ], że init będzie obsługiwał 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32)
Tak więc dobry użytkownik root uczy się wiadomości i zmienia polecenie kill -ABRT 1
lub kill -SEGV 1
zwykle generuje panika jądra i zrzut rdzenia.
Działa, ponieważ init jest pierwszym uruchomionym procesem i przyjmuje numer PID 1 [ 2b ] .
Jest to niebezpieczne, nierozsądne i czujesz, że to zwiastun złego omenu i klątwy, ale jeśli nie możesz materialnie położyć rąk i odłączyć go od sieci ...
Klątwa : nie zapisze w dzienniku, nie zabije wszystkich procesów i czeka na ich zakończenie, nie zapisze na dysku twardym poprawnie aktualizując i-węzły, ani nie odmontuje systemów plików; nawet nie mam nic przeciwko, że zapisze opcje okien graficznych i historii powłok oraz wiele innych poza naszą wyobraźnią ... jak powiedzieliśmy bliski odpowiednik odłączenia przewodu zasilającego lub baterii w przypadku laptopa.
Prawidłowy sposób
„Non nobis, Domine, non nobis, sed nomini tuo da gloriam.”, Motto templariuszy. Prawem (poprawne) sposobem jest użycie [ 3 ]
shutdown
sudo shutdown -h now
Shutdown zapewnia bezpieczne wyłączenie systemu. Wszyscy zalogowani użytkownicy są powiadamiani o awarii systemu i ...
ale przy tym -h now
nie będą mieli wystarczająco dużo czasu, aby zrobić tyle ...
Kilka słów więcej , aka Historia, rozdział II
Pewnego razu z nieba poczuli się logiczni ludzie nad ludźmi uniksowymi:
Po zabiciu procesów systemowych i odmontowaniu systemów plików system zatrzymuje się / wyłącza lub automatycznie uruchamia się ponownie. Odbywa się to za pomocą polecenia halt lub reboot, które synchronizuje zmiany na dyskach, a następnie wykonuje faktyczne zatrzymanie / wyłączenie zasilania lub ponowne uruchomienie. [ 4 ]
Rzeczywiście, w dzisiejszych czasach, nie ufa bardziej w istnienie trzech Moirai [ 5 ] w świecie Linuksa , reboot
, poweroff
i halt
[ 6 ] : the modern science of ls -l $(which poweroff halt reboot)
a jednym z man reboot
spready nowe światło na ten wiek ciemności i ujawnić nam że istnieje tylko jedno prawdziwe polecenie, które analizuje wszystkie opcje, abyśmy mogli wreszcie poprosić o działania sprzeczne z nazwami ich poleceń! ( halt -p
lub reboot -p
dla poweroff
, shutdown -r
dla reboot
...)
Teraz, gdy wszystko wydawało się jasne i przytulne dla wszystkich, pogłoski twierdzą, [ 7 ] , że w półświatku od Systemd zestawu narzędzi [ 8 ] rewolucja przeprowadzono pozostawiając nieświadomy całego Nadświecie . Dzięki armii wstecznych podkładek kompatybilności w ogóle nie zauważyliśmy, że ponowne uruchomienie, wyłączenie, zatrzymanie [ 6 ], a nawet telinit [ 9 ] i wyłączenie [ 3 ] są już powiązane z nowym królem systemctl [ 10 ]. Posłuchaj całej historii oryginalnego głosu JdeBP The Bard [ 9 ], ponieważ nie mam już tchu.
Jeśli jesteś wyznawcami kultu Ubuntu, możesz nadal być świadomy tych wszystkich roszczeń [ 11 ] .
Bliski Ziemi halt -f
, init
, telinit
, systemctl
Poszukiwanie rozwiązania szybciej niż poprawny, ale także mądry.
systemctl --force --force poweroff # the most close to kill -9 1
systemctl --force poweroff # rough but still safe
sudo halt -f # rough
sudo telinit 0 # or 6 # safe
kill -SIGINT 1 # cause reboot as the reboot command
kill -SIGRTMIN+4 1 # cause shutdown as the halt command
Jeśli masz system, czy nie, powinieneś być w stanie zatrzymać komputer bez wywoływania wszystkich poprawnych procedur pokazowych (i tak szybciej):
halt -f
: określenie opcji-f
(pamiętaj, że musisz -f
unikać procedury zamykania) za pomocą powyższego polecenia, za pomocą, sudo poweroff -f
a może nawet za pomocą sudo reboot -f -h
. Rzeczywiście możemy przeczytać man reboot
(i odpowiedniki) o potrzebie określenia opcji -f
unikania wywoływania zamykania:
Po wywołaniu z --force lub gdy w Tryb 0 albo 6, narzędzie to powołuje się na ponownym uruchomieniu (2) sam połączenia systemu (z argumentem REBOOTCOMMAND przekazywane) i bezpośrednio ponownym uruchomieniu systemu .
W przeciwnym razie po prostu wywołuje narzędzie shutdown (8) z odpowiednimi argumentami bez przekazywania argumentu REBOOTCOMMAND.
-f, --force
Nie wywołuje shutdown (8), a zamiast tego wykonuje rzeczywistą akcję, jakiej można oczekiwać od nazwy .
Ponadto możesz użyć telinit
[ 2b ] (lub init
bezpośrednio)
sudo telinit 0 # or 6
powiedzieć initowi, żeby zmienił poziom działania ... ale jeśli tak, to dlaczego nie zabić go bezpośrednio?
W systemied możesz użyć niemądrej podwójnej opcji --force --force
systemctl --force --force poweroff
Czytanie z podręcznika systemctl [ 10 ]
-f, --force
W przypadku użycia z włączeniem zastąp wszystkie istniejące sprzeczne dowiązania symboliczne.
Kiedy stosować halt
, poweroff
,reboot
lub kexec, wykonać wybraną operację bez wyłączania wszystkich jednostek. Jednak wszystkie procesy zostaną zabite na siłę, a wszystkie systemy plików zostaną odmontowane lub ponownie zamontowane tylko do odczytu. Jest to zatem drastyczna, ale stosunkowo bezpieczna opcja żądania natychmiastowego ponownego uruchomienia. Jeśli --force zostanie określone dwukrotnie dla tych operacji, zostaną one wykonane natychmiast, bez przerywania procesów lub odmontowywania systemów plików. Ostrzeżenie: dwukrotne określenie opcji --force w przypadku dowolnej z tych operacji może spowodować utratę danych.
Ps> czerp inspirację na temat wariantów z ogona JdeBP The Bard [ 7 ] .