Nadal widzę, że ludzie zalecają stosowanie sync; sync; sync; sleep 30; halt
inkantacji, gdy mówią o wyłączeniu lub ponownym uruchomieniu Linuxa.
Używam Linuksa od jego powstania i chociaż była to zalecana procedura w BSD 4.2 / 4.3 i SunOS 4 dni, nie mogę sobie przypomnieć, że musiałem to robić przez co najmniej dziesięć ostatnich lat, podczas których prawdopodobnie przeszedł przez zamknięcie / ponowne uruchomienie Linuksa może tysiące razy.
Podejrzewam, że jest to anachronizm od czasów, gdy jądro nie mogło odmontować i zsynchronizować głównego systemu plików i innych krytycznych systemów plików wymaganych nawet w trybie pojedynczego użytkownika (np. / Tmp), i dlatego konieczne było wyraźne poinformowanie go o konieczności opróżnienia jak najwięcej danych na dysk.
Obecnie, nie znajdując jeszcze odpowiedniego kodu w źródle jądra (przeglądając http://lxr.linux.no i google), podejrzewam, że jądro jest wystarczająco inteligentne, aby czysto odmontować nawet główny system plików, a system plików jest wystarczająco inteligentny aby skutecznie wykonać synchronizację (2) przed odmontowaniem się podczas normalnego shutdown
/ reboot
/ poweorff
.
Jest "sync; sync; sync"
to konieczne tylko w skrajnych przypadkach, gdy system plików nie odmontuje się czysto (np. Awaria dysku fizycznego) lub system jest w stanie, że wymuszenie bezpośredniego ponownego uruchomienia (8) spowoduje jego zawieszenie (np. Obciążenie jest zbyt duże high, aby zaplanować polecenie zamknięcia).
Nigdy też nie wykonuję tej sync
procedury przed odmontowaniem urządzeń wymiennych i nigdy nie napotkałem problemu.
Kolejny przykład - Xen pozwala DomU na wysłanie shutdown
polecenia z Dom0, jest to uważane za „czyste zamknięcie” bez konieczności logowania się i wpisywania magicznej nazwy sync; sync; sync
.
Czy mam rację, czy miałem szczęście przez kilka tysięcy wyłączeń systemu?