Какой код возврата возвращает systemctl-статус для ошибки в systemctl-статусе (не в базовой службе)? - PullRequest
0 голосов
/ 23 июня 2019

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. Может быть, у этого продавца есть конкретные коды? Понятия не имею.

1 Ответ

0 голосов
/ 27 июня 2019

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

...