Я все еще вижу, что люди рекомендуют использовать sync; sync; sync; sleep 30; halt
заклинания, когда говорят о закрытии или перезагрузке Linux.
Я использую Linux с самого начала, и хотя это было рекомендуемой процедурой в BSD 4.2 / 4.3 и SunOS 4 дня, я не могу вспомнить, что мне приходилось делать это как минимум в течение последних десяти лет, в течение которых я, вероятно, проходил выключение / перезагрузку Linux может быть тысячи раз.
Я подозреваю, что это анахронизм со времен, когда ядро не могло размонтировать и синхронизировать корневую файловую систему и другие критически важные файловые системы, требуемые даже в однопользовательском режиме (например, / tmp), и поэтому необходимо было явно указать ему сбросить как можно больше данных на диск.
В наши дни, пока не найдя соответствующий код в исходном коде ядра (копаясь в http://lxr.linux.no и google), я подозреваю, что ядро достаточно умен, чтобы безошибочно демонтировать даже корневую файловую систему, а файловая система достаточно умен. эффективно выполнить синхронизацию (2) перед размонтированием себя во время нормального shutdown
/ reboot
/ poweorff
.
Это "sync; sync; sync"
необходимо только в крайних случаях, когда файловая система не будет размонтирована без ошибок (например, сбой физического диска) или система находится в состоянии, когда только принудительная перезагрузка (8) выведет ее из заморозки (например, нагрузка слишком велика). высоко, чтобы позволить ему запланировать команду выключения).
Я также никогда не выполняю эту sync
процедуру, прежде чем размонтировать съемные устройства, и никогда не сталкиваюсь с проблемой.
Другой пример - Xen позволяет DomU отправлять shutdown
команду из Dom0, это считается «чистым завершением», при котором никто не должен входить в систему и sync; sync; sync
сначала вводить магический код .
Я прав или мне повезло несколько тысяч отключений системы?