При нахождении ошибок в файловой системе ребут наступает слишком быстро и неотвратимо, так что нет времени прочитать и осознать, что же именно было исправлено (в частности, какие файлы были повреждены и не надо ли переустановить каких RPMок). Предлагаю в случае нахождения ошибок в файловой системе ввести перед ребутом паузу для осознания творящегося.
Created attachment 1476 [details] Пауза перед перезагрузкой после исправления ошибок в файловой системе Пауза прерывается нажатием на любую клавишу (генерящую символ, пролистывать консоль можно спокойно). При нажатии клавиши L происходит sulogin.
Как с точки зрения удаленного администрирования? Если автоматика работает корректно, это больше преимущество. Вы пишете: "нет времени прочитать и осознать". С другой стороны, если нечто само быстро починилось, может быть и не стоит этого читать и осознавать. -- Бонус!
(In reply to comment #2) > Если автоматика работает корректно, это больше преимущество. Вы пишете: "нет > времени прочитать и осознать". С другой стороны, если нечто само быстро > починилось, может быть и не стоит этого читать и осознавать. -- Бонус! "-- А мне компьютер какую-то табличку выдал и ничего не работает... --а что в табличке-то написано? --не знаю, я не читала" нет уж, предпочитаю осознавать. Применительно к данному случаю, были повреждены файлы одного пакета. А если бы были повреждены внепакетные данные? которые бы потом по бакапам расползлись?
Надо сделать эту задержку конфигурируемой.
В startup 0.9.9.17 automatic_reboot() в rc.sysinit по-прежнему делает reboot -f сразу, паузы нет (ldv@ в комментарии 4 просил сделать её настраиваемой). Патч ниже: FSCK_REBOOT_DELAY в /etc/sysconfig/init (файл читается через /etc/init.d/functions), по умолчанию 0 — поведение не меняется; при N>0 ждём N секунд, любая клавиша — перезагрузка сразу, L — sulogin. Актуально только для загрузки через sysvinit (при systemd fsck делает systemd-fsck, rc.sysinit не участвует). bash -n проверен, на живой системе не гонял — патч примерный. --- a/rc.d/rc.sysinit +++ b/rc.d/rc.sysinit @@ -42,6 +42,19 @@ localfs_mounted= automatic_reboot() { + # Give the admin a chance to read what fsck has done (and to get a + # shell) before the console is gone: FSCK_REBOOT_DELAY seconds from + # /etc/sysconfig/init, 0 (default) means reboot at once. + if [ "${FSCK_REBOOT_DELAY:-0}" -gt 0 ] 2>/dev/null; then + local key= + echo "Automatic reboot in $FSCK_REBOOT_DELAY seconds, press any key to reboot now or L to log in." + read -r -s -n 1 -t "$FSCK_REBOOT_DELAY" key ||: + if [ "$key" = l ] || [ "$key" = L ]; then + hide_plymouth + export PS1="(FS Repair) \# # " + sulogin + fi + fi if [ -n "$localfs_mounted" ]; then echo 'Unmounting file systems.' umount -arnf --- a/sysconfig/init +++ b/sysconfig/init @@ -20,3 +20,8 @@ # udev service for rc.sysinit UDEV_SERVICE=/etc/init.d/udevd + +# Seconds to wait before the automatic reboot after fsck has repaired +# a file system, so that its messages can be read (L gives a shell). +# 0 = reboot immediately. +FSCK_REBOOT_DELAY=0