Получить текущее состояние systemd

Как мы можем узнать, завершила ли systemd загрузку системы?

Я не хочу выполнять задание cron, если система действительно находится в процессе загрузки из-за отсутствия сетевого подключения. Мой скрипт, запущенный cron, будет иметь сверху тест, и он завершится, если процесс загрузки не завершен, например

#!/bin/sh
$STATE=`HERE ADD THE MISSING PART`
if [ $STATE != "active" ]; then
  exit
fi
# Actions to do on next cron after booting

Если он также может предоставить мне информацию о завершении процесса, поскольку проблема может быть такой же ..;

Я делал это с SystemV с помощью команды runlevel , но Systemd не меняет уровень выполнения в конце загрузки.

Спасибо

1
задан 10 September 2019 в 15:37
1 ответ

Вы можете проверить цель, которая должна быть активной для запуска вашего скрипта. Например, чтобы сеть была доступна, вам нужно проверить network-online.target ( systemctl check вернет 0, если проверенный модуль активен)

Целевая система, которую пытается достичь systemd, является своей целью "по умолчанию", которую можно запросить с помощью systemctl get-default . Если эта цель подключена к сети, система завершила загрузку (поэтому вы можете выполнить systemctl status $ (systemctl get-default) , чтобы проверить, завершен ли процесс загрузки)

Изменить: Если вы хотите отслеживать только текущее состояние системы и вас не интересуют цели (т.е. вы хотите запускать свою команду только тогда, когда все запущено и работает), лучше использовать systemctl is-system-выполняется команда . Будет выведено работает , если все в порядке, или ухудшено , если система работает, но некоторые службы не работают (что может указывать или не указывать на ошибку). Другие состояния будут указывать на то, что ваш скрипт не должен запускаться. В качестве побочного примечания, обычно лучше проверять возвращаемые значения, а не анализировать текстовый вывод, но на странице руководства не указываются возвращаемые значения, только говорится, что все, кроме «выполнения» результатов ненулевого кода выхода, поэтому может быть безопаснее для анализа выходного текста.

См. справочную страницу systemctl для получения информации о возможных выходных значениях.

5
ответ дан 3 December 2019 в 17:02

Теги

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