Как я могу предсказать порядок выключения systemd?

9

Есть ли способ, чтобы systemdсказать мне приблизительный порядок, в котором он будет отключать службы, когда я полностью выключаю всю систему? Поскольку systemdбудет происходить параллельное отключение, я понимаю, что нет никакого способа узнать точный порядок, но все равно было бы очень полезно знать, какие ограничения systemdбудут накладываться на последовательность выключения, предпочтительно в виде визуализации, которую легко понять.

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

Я надеялся, что что-то вроде

systemctl list-dependencies --before shutdown.service

будет делать работу, но он только излучает:

shutdown.service
Адам Спирс
источник

Ответы:

2

Следующее может помочь вам:

systemctl list-dependencies --before shutdown.target

С Уважением,

Мохамед Салхи
источник
3
Ну, спасибо, что указал на мою глупую ошибку, что это shutdown.targetне так shutdown.service. Однако это все еще не дает мне упорядоченный список, который я запрашивал, но вместо этого дает мне очень короткий список, или даже пустой, в некоторых системах.
Адам
Systemd, к сожалению, непрозрачен специально. Для стиля oldschool sysvinit можно, вероятно, добавить ведение журнала в файлы запуска и зарегистрировать запущенные процессы в файле с отметкой времени - по крайней мере, это то, что пришло мне в голову первым.
Шев
1
@AdamSpiers @ Мохамед Сали, в основном, «до» означает «начинается раньше». Это означает, что вы хотите команду systemctl list-dependencies --after shutdown.target... по крайней мере, которая найдет все, что не делает первая команда. Это также заблуждение , потому что shutdown.targetэто начинает , но все остальные единицы остановки , и в данном случае это не имеет значения , есть ли у вас «до» или «после» заказа; остановка выполняется перед запуском в обоих случаях.
sourcejedi
1

Порядок выключения обычно противоположен порядку запуска.

Тем не менее, все демоны посылают сигнал выключения, и для их выключения и выхода потребуется разное время.

Переходя к простому systemd, я не думаю, что целесообразно предсказать, какие сервисы выйдут в какой последовательности. Кроме того, зависимости будут контролировать некоторые последовательности.

Jonesome Восстановить Монику
источник
1
Правильно - я знал об этом из-за распараллеливания. Однако мне не нужен точный порядок - только то, какие порядки применяются и какие вещи могут потенциально выполняться параллельно. Я уточню свой вопрос, чтобы уточнить это. Кроме того, вы можете претендовать на «обычно»? Когда это не будет наоборот?
Адам Спайерс