„Restart” lub „shutdown -r now”: jakie polecenie restartu jest bezpieczniejsze?

50

W naszej organizacji jest około 500 maszyn RedHat Linux.

Na wszystkich komputerach zainstalowaliśmy aplikacje i usługi pod /etc/init.dserwerami RAC i Oracle. Zamierzamy wykonać mniam aktualizacje na wszystkich komputerach, a następnie ponownie uruchomić komputer.

Zastanawiałem się więc, które polecenie jest bezpieczniejsze:

reboot

lub

shutdown -r now
dandan
źródło
1
mamy wszelkiego rodzaju - jak redhat 4,5,6,7
dandan
6
Przewińmy do tyłu: Jak myślisz, dlaczego może istnieć różnica w bezpieczeństwie?
underscore_d
2
@underscore_d: nie jest nierozsądne myśleć, że ktoś może być poleceniem „tylko do użytku wewnętrznego”, które nie wykonuje wszystkich tych samych czystych kroków zamykania. Np. Może jeden używa drugiego po wykonaniu wstępnych kroków czyszczenia. Oczywiście strona man wyjaśnia, że rebootjest to tylko starsze polecenie i nadal istnieje tylko dla wstecznej zgodności.
Peter Cordes,
1
@knowhy Pytanie nie może być duplikatem pytania z innej strony.
Insane

Odpowiedzi:

50

W systemach Red Hat nie ma funkcjonalnej różnicy między rebooti shutdown -r now.

Rób wszystko, co jest dla ciebie łatwiejsze.

ewwhite
źródło
13
Ale jeden sprawia, że ​​piszesz więcej i jest zasadniczo „fajniejszy”!
Szalony
Jeden wymaga dostępu superużytkownika, drugi może być wykonany przez dowolnego użytkownika (chyba że jest ograniczony) z sesji X.
Burhan Khalid
2
@BurhanKhalid Jeśli masz losowe osoby logujące się do sesji X na serwerach, możesz mieć większe problemy niż zastanawianie się, które z dwóch poleceń jest „bezpieczniejsze”.
CVn
1
Przynajmniej na Debianie (chociaż ja łatwo przyznać, że nie wiem o Red Hat, ale odpowiedź Janne Pikkarainen sugeruje to może być podobne, ale różnią) halt, reboota poweroffnie akceptują wiadomość powód ani czasu, jak wyjaśniono Mikhail T. . Myślę, że uważam jedno narzędzie za coś, co inne nie pozwala na „funkcjonalną różnicę”.
CVn
88

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'

Następnie użytkownicy będą otrzymywać okresowe przypomnienia, aby wyjść i tak dalej - proces będzie bardziej uporządkowany i profesjonalny.

Michaił T.
źródło
13

Jeśli spojrzeć, w RHEL 7 obie /sbin/shutdowni /sbin/rebootsą właściwie tylko dowiązania symboliczne do Systemd w systemctlpoleceniu. Więc używaj, co chcesz. Żadna różnica funkcjonalna, jak powiedział ewwhite, nawet we wcześniejszych wersjach RHEL, które nie korzystały jeszcze z systemd.

Janne Pikkarainen
źródło
12
Nie uważam tego argumentu bardzo przekonujące: to oczywiste, że /sbin/shutdowni /sbin/rebootnie nie zachowują się tak samo we wszystkich przypadkach (w szczególności: /sbin/shutdown! Nie restart domyślnie), więc jeśli są dowiązane do tego samego pliku wykonywalnego, to wykonywalny musi badać go ARGV[0]i odpowiednio dostosowywać jego zachowanie. Chociaż z pewnością zmniejsza to ryzyko niezamierzonych różnic, nie jest to przekonujący dowód na to, że nie ma zamierzonych różnic funkcjonalnych, o których OP mógłby chcieć wiedzieć.
ruakh
3
Uważaj na założenie, że dowiązanie symboliczne implikuje równoważność, szczególnie jeśli w grę wchodzą różne nazwy.
mckenzm
ruakh ma rację - pomyśl o tym przez chwilę, mimo że rebootjest dowiązany do systemctl, nie możesz używać np. reboot status whatever.servicetak jak z tym drugim, prawda?
grawity
9

Korzystanie rebootjest bezpieczniejsze.

Używanie rebootintencji jest jasne i nie ma sposobu, aby pomylić ją z czymś innym, shutdown -t nowco może prowadzić do bólu głowy, jeśli używasz na zdalnym serwerze z ograniczoną kontrolą.

Antzi
źródło
2
IMHO nie doceniła odpowiedzi. Bardzo często zapominamy o tym, jak ważne jest jasne wyrażanie intencji i ile czasu i przekleństw oszczędza na dłuższą metę!
RoughTomato
1

W przypadku nowoczesnego RHEL zaleca się użycie komendy systemctl, tak jak to tutaj podsumowano : [ostatnie] Dystrybucje RHEL powinny używać nowej komendy systemctl do wydania polecenia poweroff / restart. Jak podano na stronach ponownego uruchamiania i zamykania systemu, są one „starszym poleceniem dostępnym tylko dla kompatybilności”.

Jeśli jednak używasz wielu różnych dystrybucji lub dystrybucji różnych roczników, być może trzymaj się shutdown -r now 'reason for shutdown'.

Głównym powodem użycia rebootbyłoby uniknięcie ryzyka zapomnienia o dodaniu -r podczas używania shutdown -rna zdalnym komputerze, co może łatwo skutkować niemożnością ponownego zalogowania się i koniecznością użycia zdalnego administratora (jeśli jest dostępny) w celu ponownego uruchomienia maszyna.

robocat
źródło
0

Starsze systemy zdecydowanie rozróżniały między shutdowni reboot. Ta ostatnia nie zamknie usług, a nawet zsynchronizuje bufory dysku. W środowiskach heterogenicznych - lub w celu uniknięcia precedensu, który może być niebezpieczny w przyszłości podczas napotkania innych implementacji * ix - warto shutdownprzyzwyczaić się.

użytkownik19151
źródło