Jaka jest różnica między restartem, init 6 i zamknięciem -r teraz?

100

Chcę tylko poznać różnicę między

  • reboot
  • init 6
  • shutdown -r now

a który jest najbezpieczniejszy i najlepszy?

Rahul Patil
źródło
1
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ą.

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

Michaił T.
źródło
5

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.

init (8) restart (8)

użytkownik2619306
źródło
4

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.

Marián Černý
źródło
1
Nie jest to jednak pytanie BSD, o czym świadczy znacznik pytania i użycie poziomu uruchamiania Systemu 5 w jednej z komend. ☺
JdeBP
1
Wiem, że to pytanie o Linuksa. Pomyślałem, że ktoś może uznać za przydatne wiedzieć, że w niektórych innych systemach jest to różnica.
Marián Černý