Сводка упавшей службы говорит, на каком этапе случился отказ. В этом шаге — как это прочитать.
В строке Active после failed в скобках стоит Result — чем кончилась попытка: exit-code — процесс вышел с ненулевым кодом, signal — его убил сигнал, timeout — он не уложился во время. Строка Process ниже — какая команда выполнялась и её код завершения: status=203/EXEC.
Коды от 200 до 255 ставит сам systemd: он готовил запуск и не смог его сделать, программа не начала работу. Два частых:
| Код | Что не получилось |
|---|---|
203/EXEC |
выполнить программу из ExecStart: файла нет или он не исполняемый |
217/USER |
найти пользователя из строки User |
Код меньше 200 — например, 1/FAILURE — вернула сама программа: она запустилась и завершилась с ошибкой. Её причину ищут в сообщениях программы и в её настройках.
Те же сведения коротко печатает systemctl show:
Служба упала, в её сводке такая строка. С чего начнёшь поиск причины?
Process: 1532 ExecStart=/usr/local/bin/report-server (code=exited, status=1/FAILURE)
-
Автозапуск решает, запускать ли службу при загрузке. Строка
Processговорит о том, как кончился запуск, — программа вышла с ошибкой. -
Без пользователя systemd не запустил бы программу и вернул бы
217/USER. Код 1 вернула программа, которая уже работала. -
Код 1 меньше 200 — его вернула сама программа: значит, она запустилась. С неверным путём systemd вернул бы
203/EXEC.
Коды от 200 ставит systemd, когда не смог запустить программу. 1/FAILURE вернула сама программа: она запустилась и завершилась с ошибкой — причину пишут её сообщения в sudo journalctl -u <служба>.
Главное в шаге
-
Resultв строкеActive— чем кончилась попытка:exit-code,signalилиtimeout. - Код от 200 — systemd не смог запустить программу; код меньше 200 вернула сама программа.