Почему не работает созданная служба 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.
Не понятно почему служба не стартует, хотя скрипт корректный и не должен завершаться?

21 Авг 2019 в 06:54
223 +1
0
Ответы
1

Одна из возможных причин, по которой служба не стартует, может быть связана с исполняемым файлом /home/dts/bin/dts-service.sh. Ошибка "Exec format error" указывает на несовместимость формата исполняемого файла. Проверьте, что скрипт правильно сконфигурирован и имеет правильный шебанг (например, #!/bin/bash).

Также обратите внимание на то, что запуск программ через systemd требует абсолютного пути к исполняемым файлам и каталогам, поэтому убедитесь, что все пути в вашем скрипте и юнит-файле указаны абсолютно.

Также важно убедиться, что служба имеет все необходимые права доступа к файлам и каталогам, которые она пытается использовать при запуске.

Если проблема все еще остается, попробуйте выполнить запуск программы напрямую через systemd, чтобы более точно определить причину ошибки. Для этого создайте временный юнит-файл с минимальными настройками (например, только ExecStart) и попробуйте запустить его.

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

20 Апр 2024 в 13:11
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир