На завершении работы размонтировавшиеся диски происходят перед обработкой сигнала завершения работы?

Не уверен, что это все еще слишком долго для того, что вы имели в виду:

read foo && [ "$foo" = 'y' ] && echo 'Yes'
1
09.11.2014, 23:50
1 ответ

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

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

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

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

1
27.01.2020, 23:51

Теги

Похожие вопросы