Dokładne zachowanie tych trzech poleceń różni się w zależności od systemu operacyjnego.
Thorbjørn Ravn Andersen
Odpowiedzi:
83
Nie ma w nich różnicy. Wewnętrznie robią dokładnie to samo:
rebootużywa shutdownpolecenia (z przełącznikiem -r). Polecenie shutdown użyte do zabicia wszystkich uruchomionych procesów, odmontowania wszystkich systemów plików i na koniec informuje jądro o wydaniu polecenia zasilania ACPI. Źródło można znaleźć tutaj . W starszych dystrybucjach komenda reboot zmusiła procesy do wyjścia poprzez wydanie SIGKILLsygnału (wciąż znajdowanego w źródłach, można wywołać z -fopcją), w najnowszych dystrybucjach domyślnie jest bardziej wdzięczny i przyjazny dla init init 1 -> shutdown -r. Zapewnia to, że demony czyszczą się przed wyłączeniem.
init 6mówi initprocesowi, aby zamknął wszystkie odrodzone procesy / demony zapisane w plikach init (w odwrotnej kolejności, w jakiej zostały uruchomione) i na koniec wywołuje shutdown -r nowpolecenie ponownego uruchomienia komputera
Dzisiaj nie ma dużej różnicy, ponieważ obie komendy robią dokładnie to samo i szanują skrypty inicjujące używane do uruchamiania usług / demonów, wywołując dla nich skrypty zamykające. Z wyjątkiem przypadków reboot -f -r nowokreślonych poniżej
Na stronach podręcznika wyjaśniono, dlaczego reboot -fnie jest to bezpieczne:
-f, --force
Wymuś natychmiastowe zatrzymanie, wyłączenie zasilania, ponowne uruchomienie. Nie kontaktuj się z systemem init.
Edytować:
Zapomniałem wspomnieć, że w nadchodzących dystrybucjach RHEL powinieneś użyć nowego systemctlpolecenia, aby wydać polecenie poweroff / restart. Jak podano na stronach podręcznika rebooti shutdownsą one „starszym poleceniem dostępnym tylko dla kompatybilności”. i systemctlmetoda będzie jedyną bezpieczną.
Czasami mój restart uruchamia się w SIGTERM, czy istnieje sposób, aby dowiedzieć się, dlaczego, a także istnieje sposób na przekroczenie limitu czasu ponownego uruchomienia, tak że jeśli zajmie to zbyt długo, wymusi restart?
CMCDragonkai
2
Te wersje RHEL nie są już „nadchodzące”. ☺ Jak wyjaśniono bardziej szczegółowo na stronie unix.stackexchange.com/a/196014/5132 , w takich systemach operacyjnych nie ma żadnej różnicy. Nie są to nawet różne programy.
JdeBP
Czy literówka mówiłaś init 1 -> shutdown -r?
deed02392
Twój link jest uszkodzony.
whoKnows
8
Zalecane jest zamknięcie, ponieważ pozwala określić przyczynę drastycznego działania - coś, co zawsze należy zrobić. Wiadomość zostanie zapisana w dzienniku (ach) dla potomności. Na przykład:
shutdown -r now 'Kernel upgrade requires reboot'
Możesz także wykonać zaplanowane ponowne uruchomienie - określając coś innego niż nowczas ponownego uruchomienia:
shutdown -r 22:00 'Work around kernel memory leak'
Wówczas użytkownicy otrzymają okresowe przypomnienia, aby wydostać się w miarę upływu czasu - proces będzie bardziej uporządkowany i profesjonalny.
Na tradycyjnych jednorożcach rebooti shutdown -r nowsą bardzo różne polecenia. Przy typowym użyciu rebootmożna bezpiecznie korzystać tylko w trybie pojedynczego użytkownika.
shutdown -r nowto kanoniczna metoda zamykania różnych * nixów, bezpieczniejsza w użyciu i ogólnie funkcjonalnie równoważna init 6.
Na FreeBSD istnieje różnica między rebooti shutdown -r now. Ze strony podręcznika reboot:
Zwykle narzędzie shutdown (8) jest używane, gdy system musi zostać zatrzymany lub zrestartowany, dając użytkownikom wcześniejsze ostrzeżenie o zbliżającym się przeznaczeniu i czysto kończąc określone programy.
Odpowiedzi:
Nie ma w nich różnicy. Wewnętrznie robią dokładnie to samo:
reboot
używashutdown
polecenia (z przełącznikiem -r). Polecenie shutdown użyte do zabicia wszystkich uruchomionych procesów, odmontowania wszystkich systemów plików i na koniec informuje jądro o wydaniu polecenia zasilania ACPI. Źródło można znaleźć tutaj . W starszych dystrybucjach komenda reboot zmusiła procesy do wyjścia poprzez wydanieSIGKILL
sygnału (wciąż znajdowanego w źródłach, można wywołać z-f
opcją), w najnowszych dystrybucjach domyślnie jest bardziej wdzięczny i przyjazny dla initinit 1 -> shutdown -r
. Zapewnia to, że demony czyszczą się przed wyłączeniem.init 6
mówiinit
procesowi, aby zamknął wszystkie odrodzone procesy / demony zapisane w plikach init (w odwrotnej kolejności, w jakiej zostały uruchomione) i na koniec wywołujeshutdown -r now
polecenie ponownego uruchomienia komputeraDzisiaj nie ma dużej różnicy, ponieważ obie komendy robią dokładnie to samo i szanują skrypty inicjujące używane do uruchamiania usług / demonów, wywołując dla nich skrypty zamykające. Z wyjątkiem przypadków
reboot -f -r now
określonych poniżejNa stronach podręcznika wyjaśniono, dlaczego
reboot -f
nie jest to bezpieczne:Edytować:
Zapomniałem wspomnieć, że w nadchodzących dystrybucjach RHEL powinieneś użyć nowego
systemctl
polecenia, aby wydać polecenie poweroff / restart. Jak podano na stronach podręcznikareboot
ishutdown
są one „starszym poleceniem dostępnym tylko dla kompatybilności”. isystemctl
metoda będzie jedyną bezpieczną.źródło
init 1 -> shutdown -r
?Zalecane jest zamknięcie, ponieważ pozwala określić przyczynę drastycznego działania - coś, co zawsze należy zrobić. Wiadomość zostanie zapisana w dzienniku (ach) dla potomności. Na przykład:
shutdown -r now 'Kernel upgrade requires reboot'
Możesz także wykonać zaplanowane ponowne uruchomienie - określając coś innego niż
now
czas ponownego uruchomienia:shutdown -r 22:00 'Work around kernel memory leak'
Wówczas użytkownicy otrzymają okresowe przypomnienia, aby wydostać się w miarę upływu czasu - proces będzie bardziej uporządkowany i profesjonalny.
źródło
Na tradycyjnych jednorożcach
reboot
ishutdown -r now
są bardzo różne polecenia. Przy typowym użyciureboot
można bezpiecznie korzystać tylko w trybie pojedynczego użytkownika.shutdown -r now
to kanoniczna metoda zamykania różnych * nixów, bezpieczniejsza w użyciu i ogólnie funkcjonalnie równoważnainit 6
.init (8) restart (8)
źródło
Na FreeBSD istnieje różnica między
reboot
ishutdown -r now
. Ze strony podręcznikareboot
:źródło