Al igual que VAR=/opt/myapp
y luego usando $VAR
para sustituir el valor. Me gusta$VAR/module1/ant -f patch.xml
Как с sysvinit
, так и с systemd выключение операционной системы начинается с уведомления процесса init
(процесса с pid 1 )о том, что система должна завершить работу (или перезагрузиться, или отключить питание ).
sysvinit
делает это, используя FIFO /run/initctl
для связи с init
, запрашивая у него переключение на соответствующий уровень запуска. См. справочную страницу init
для краткого обзора.
systemd поддерживает множество способов сделать это. Различные сигналы могут использоваться для запроса выключения, перезагрузки и т. д. в различных вариантах; это также можно запросить по шине d -(busctl
man-страница объясняет, как исследовать это ).
Когда pid 1 получает запрос на завершение работы, он следует своей конфигурации и спецификации и выполняет все необходимые для этого шаги. Обычно это включает в себя уведомление всех пользователей о том, что происходит отключение, отключение всех запущенных служб (управляемым способом с помощью systemd; использование сценариев завершения работы в различных формах с sysvinit
), синхронизация смонтированных файловых систем, возможное их размонтирование, уничтожение всех оставшихся процессов (с помощью обычной последовательности TERM
, затем KILL
)и, наконец, вызов ядра reboot
системный вызов с соответствующими параметрами.
Это описывает общую последовательность. Во всем этом есть еще много наворотов, в том числе контроль доступа (с помощью Polkit ), различные доступные хуки, kexec
, внезапное отключение питания -, CtrlAltDel обработка... Документация systemd охватывает многие из этих деталей.