@Zaher220
Software developer

Почему не работает созданная служба systemd?

Здравствуйте.
Появиласть необходимость запускать программу при загрузке системы и перезапускать в случае её закрытия или краха. Debian 8.1 располагает для этого инстументом systemd.
Был создан юнит с именем dts.service
[Unit]
Description = DTS deamon

[Service]
Type = forking
ExecStart = /home/dts/bin/dts-service.sh
Restart = always
StartLimitInterval = 60
StartLimitBurst = 10

[Install]
WantedBy = graphical.target


Который запускает следующий скрипт /home/dts/bin/dts-service.sh
cd /home/dts/dts_sdk2/bin
export LD_LIBRARY_PATH=./
./khconsole -c "../dtssrv_pid_flow_las.cfg" # &> /dev/null


При выполнении этот скрипт запускает программу khconsole которая должна все время работать если она закрылась или повисла то systemd должен перезапустить её.

Проблема в следующем:
Отдельно, скрипт отрабатывает корректно. При попытке запуска через systemd получаю следующий результат
Job for dts.service failed. See 'systemctl status dts.service' and 'journalctl -xn' for details.

Результат systemctl status dts.service
dts.service - DTS deamon
Loaded: loaded (/etc/systemd/system/dts.service; enabled)
Active: failed (Result: start-limit) since Пт 2015-09-04 18:27:38 OMST; 28s ago
Process: 1058 ExecStart=/home/dts/bin/dts-service.sh (code=exited, status=203/EXEC)

сен 04 18:27:37 dts systemd[1]: Failed to start DTS deamon.
сен 04 18:27:37 dts systemd[1]: Unit dts.service entered failed state.
сен 04 18:27:38 dts systemd[1]: dts.service start request repeated too quickly, refusing to start.
сен 04 18:27:38 dts systemd[1]: Failed to start DTS deamon.
сен 04 18:27:38 dts systemd[1]: Unit dts.service entered failed state.

Результат journalctl -xn
-- Logs begin at Пт 2015-09-04 18:12:17 OMST, end at Пт 2015-09-04 18:27:38 OMST. --
сен 04 18:27:37 dts systemd[1]: dts.service: control process exited, code=exited status=203
сен 04 18:27:37 dts systemd[1]: Failed to start DTS deamon.
-- Subject: Ошибка юнита dts.service
-- Defined-By: systemd
-- Support: lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Произошел сбой юнита dts.service.
--
-- Результат: failed.
сен 04 18:27:37 dts systemd[1]: Unit dts.service entered failed state.
сен 04 18:27:37 dts systemd[1058]: Failed at step EXEC spawning /home/dts/bin/dts-service.sh: Exec format error
-- Subject: Не удалось запустить процесс /home/dts/bin/dts-service.sh
-- Defined-By: systemd
-- Support: lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Сбой: не удалось запустить процесс /home/dts/bin/dts-service.sh.
--
-- Код ошибки: 8.
сен 04 18:27:37 dts systemd[1]: dts.service: control process exited, code=exited status=203
сен 04 18:27:37 dts systemd[1]: Failed to start DTS deamon.
-- Subject: Ошибка юнита dts.service
-- Defined-By: systemd
-- Support: lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Произошел сбой юнита dts.service.
--
-- Результат: failed.
сен 04 18:27:37 dts systemd[1]: Unit dts.service entered failed state.
сен 04 18:27:38 dts systemd[1]: dts.service start request repeated too quickly, refusing to start.
сен 04 18:27:38 dts systemd[1]: Failed to start DTS deamon.
-- Subject: Ошибка юнита dts.service
-- Defined-By: systemd
-- Support: lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Произошел сбой юнита dts.service.
--
-- Результат: failed.
сен 04 18:27:38 dts systemd[1]: Unit dts.service entered failed state.

Не понятно почему служба не стартует, хотя скрипт корректный и не должен завершаться?
  • Вопрос задан
  • 14012 просмотров
Решения вопроса 1
@Aves
Проблема в отсутствии #!/bin/bash в dts-service.sh
Или нужно в юните написать
ExecStart=/bin/sh -c '/home/dts/bin/dts-service.sh'

Ну и Type=forking нужен, только если ./khconsole форкается & и dts-service.sh завершается. Без этого Type нужен simple, то есть можно не указывать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Konkase
Лучше засуньте в юнит, то что в скрипте dts-service.sh, или попробуйте использовать oneshot вместо forking
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы