Какой код возврата возвращает статус systemctl для ошибки в статусе systemctl (а не в базовой службе)?

http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic.html#INISCRPTACT

Согласно этому статусу systemctl есть специальный список кодов возврата, которые возвращают информацию о запрашиваемой вами службе.

Если запрошено действие состояния, сценарий инициализации вернет следующие коды состояния выхода.

0 program is running or service is OK
1 program is dead and /var/run pid file exists
2 program is dead and /var/lock lock file exists
3 program is not running
4 program or service status is unknown
5-99  reserved for future LSB use
100-149   reserved for distribution use
150-199   reserved for application use
200-254   reserved

Это нормально, но я ошарашен тем фактом, что 1 не означает, что systemctl status сам по себе вышел из строя (НЕ БАЗОВАЯ СЛУЖБА).

Я пишу скрипт, который запрашивает статус службы, которая находится в процессе запуска, поэтому я ожидаю увидеть код состояния 3 пару раз, а затем 0. Но какие коды состояния я должен ожидать, когда команда systemctl status это бразок?

У меня возникает соблазн просто сказать, что 5+ является неисправимой ошибкой, и я должен подождать, пока сервис не появится, но это не то, что конкретно говорится в этом документе. Это просто дает общие оговорки.

Если это поможет, я использую Ubuntu 16.04 и 18.04. Может быть, у этого продавца есть конкретные коды? Я понятия не имею.


person Jazzepi    schedule 22.06.2019    source источник


Ответы (1)


ИМХО, статус выхода существует для того, чтобы сценарист (то есть вы) мог получить вывод команды состояния без необходимости анализировать вывод.
Пример:
$ check [command]; echo $? [command] is running 0 $
Сравните с:
$ check [command1]; echo $? [command1] is not running 0 $
Единственный способ узнать, выполняется команда или нет, – это проанализировать вывод на наличие нет. Установка статуса на 0 или 1 позволит скрипту намного проще читать вывод. Конечно, если бы команда проверки не сработала, она должна была бы вернуть более высокий код выхода.

person Scottie H    schedule 26.06.2019