Системная ошибка: путь к исполняемому файлу не является абсолютным

У меня есть следующий код systemd ниже.

[Unit]
Description=start RCC logger server process
Requires=rcc-drbd.service rcc_check_locked_scr.service s96rcc.service
After=rcc-drbd.service rcc_check_locked_scr.service s96rcc.service

[Service]
ExecStart= exec /var/RCC/RCClogger.sh
Restart=no

[Install]
WantedBy=multi-user.target

где я пытаюсь запустить его, я получаю ошибку ниже.

Mar 23 04:45:52 localhost.localdomain systemd[1]: 
[/etc/systemd/system/rcc_logger.service:7] Executable path is not absolute, 
ignoring: exec /v...ogger.sh
Mar 23 04:45:52 localhost.localdomain systemd[1]: rcc_logger.service lacks 
both ExecStart= and ExecStop= setting. Refusing.

Я знаю, что это из-за отсутствия абсолютного пути к команде exec, но так как exec недоступен как двоичный файл, я не могу использовать для него абсолютный путь. Как заставить этот ExecStart работать?

2 ответа

Вы не можете использовать exec в конфигурации единицы обслуживания systemd.
exec является встроенной оболочкой и не может вызываться напрямую из файловой системы (она не находится в файловой системе) - type exec а также whereis exec покажет вам это.
Используйте оболочку, в которой они написаны.

Например, если это bash скрипт, вы можете запустить скрипт так:

bash /var/RCC/RCClogger.sh

Сейчас, bash является исполняемым файлом и имеет абсолютный путь: /bin/bash, Ваш ExecStart будет выглядеть следующим образом:

ExecStart=/bin/bash /var/RCC/RCClogger.sh

Другой способ - просто добавить shebang к началу сценария:

#!/bin/bash
... script code ...

Это говорит операционной системе, чтобы запустить файл с указанным интерпретатором, /bin/bash в этом случае.

После этого просто сделайте ваш скрипт исполняемым:

chmod +x /var/RCC/RCClogger.sh

И использовать его непосредственно как ExecStart:

ExecStart=/var/RCC/RCClogger.sh

"EXecStart=" нужен абсолютный путь для запуска службы. Получите полный путь к вашему файлу.sh и добавьте его в оператор ExecStart.

Снова "manpage" даст вам подробную информацию.

Другие вопросы по тегам