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

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

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

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

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 должны быть ограничены вещами, которые делают следующую загрузку более эффективной, не должно быть ничего, что абсолютно необходимо сделать.

  • Почему моя ловушка не срабатывает?
  • Почему компиляция функции ловушки позволяет управлять c-с?
  • Невозможно переписать команду «trap» для SIGTSTP, SIGTTIN и SIGTTOU
  • Что такое сигнальные ловушки?
  • Помимо USR1 и USR2, какие сигналы можно безопасно использовать для пользовательского прерывания поведения? (в python)
  • Какой сигнал отправляет X своим клиентам, когда он получает SIGINT?
  • Как генерировать прерывание сигнала в файловом дескрипторе в Linux?
  • Отображение intr для del key
  • Что происходит с запрошенными рекурсивными сигналами?
  • SIGINT не очищается в "$ {FUNCNAME }"
  • Предотвращение доступа SIGINT к дочерним процессам
  • Ключ, отличный от Control для отправки SIG *?
  • Linux и Unix - лучшая ОС в мире.