При завершении работы перед установкой аварийного сигнала отключите накопители?

Поэтому, основываясь на моем понимании процесса выключения Unix / Linux (который очень ограничен, я допускаю), я думаю, что в какой-то момент эти шаги происходят: 1. смонтированные диски размонтируются 2. сигнал завершения отправляется в запущенные приложения, что позволяет приложения для очистки перед выходом

Теперь, что происходит первым? Или № 1 вообще не происходит? Или заказ не гарантирован?

Причина, по которой я задаю этот вопрос, заключается в том, что я работаю над приложением, которое записывает данные в центральный файл конфигурации при выключении, где центральный файл конфигурации может быть размещен в любом месте. Я обеспокоен тем, что если центральный файл конфигурации находится на смонтированном диске, а # 1 – до # 2, то сохраненный путь, который у меня есть для центрального файла конфигурации, может быть более недействительным. Это имеет смысл?

  • Может ли Ctrl + C отправить сигнал SIGINT нескольким процессам?
  • Почему различное поведение захвата EXIT vs INT
  • Невозможно переписать команду «trap» для SIGTSTP, SIGTTIN и SIGTTOU
  • убийство подпроцессов и ловушек
  • Ловушка ctrl c не работает как ожидалось
  • В Ctrl + C убейте текущую команду, но продолжайте выполнение скрипта
  • Что такое сигнальные ловушки?
  • Что такое сигнал 0 в команде trap?
  • One Solution collect form web for “При завершении работы перед установкой аварийного сигнала отключите накопители?”

    Это зависит от системы init и от того, как она настроена. Но любая нормальная конфигурация позволяет системному программному обеспечению регистрировать крюк для запуска при завершении работы. С традиционным System V init, это файл в файле /etc/rc0.d . С традиционным BSD init, это код в /etc/rc.shutdown . С Upstart это событие изменения уровня запуска до 0 или 6. Список продолжается, поэтому поддержка пакетов для всех дистрибутивов там может быть большой частью работы (большинство авторов предоставили бы скрипт завершения работы для своего приложения и диспетчер распространения делает пакет, который регистрирует сценарий завершения работы в нужном месте).

    После того, как все сценарии приложения будут выполнены, завершатся заключительные этапы завершения работы. Как правило, это включает в себя размонтирование всех файловых систем, кроме тех, где есть все еще открытые файлы, а затем уничтожения всех оставшихся процессов и, наконец, размонтирование оставшихся файловых систем (кроме корневого каталога, который повторно монтируется только для чтения) и остановки или перезагрузки компьютера. Обычно посылают все процессы на сигнал TERM, который является захватывающим, а затем через несколько секунд посылает сигнал KILL. Хотя процесс может попытаться отреагировать, время ограничено, и система не будет ждать.

    Поэтому, если ваше приложение установлено как root, вам просто нужно зарегистрировать сценарий инициализации времени выключения. Если ваше приложение установлено непривилегированными пользователями, у вас не может быть гарантии, что вы сможете что-либо сделать во время фазы останова.

    Обратите внимание, что в любом случае вы должны грациозно справляться с сбоем системы или сбоем питания. Действия Shutdown-time должны быть ограничены вещами, которые делают следующую загрузку более эффективной, не должно быть ничего, что абсолютно необходимо сделать.

    Linux и Unix - лучшая ОС в мире.