Услуги Systemd, Рабочий Каталог не изменяет каталог

Я создал этот сценарий:

[Unit]
Description=test

[Service]
WorkingDirectory=/home/someuser
ExecStart=/somescript.sh

Restart=always
RestartSec=10

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=autodeploy

Environment=NODE_ENV=production PORT=1494

[Install]
WantedBy=multi-user.target

Но когда я выполняю его, это говорит:

Process: 8986 ExecStart=/somescript.sh (code=exited, status=203/EXEC)

Я понял, что это сообщение означает, что сценарий не будет найденный... Почему Рабочий Каталог, не работающий на меня?

Спасибо.

6
задан 7 August 2018 в 02:45

2 ответа

systemd WorkingDirectory= установка определяет, на котором каталоге сервис будет запущен, то же как тогда, когда Вы используете cd изменить каталог, когда Вы работаете в оболочке.

Это не означает что все другие пути (включая это от ExecStart=) теперь будет относительно него, таким образом, все еще необходимо полностью указать путь к сценарию в той директиве:

ExecStart=/home/someuser/somescript.sh

Возможно, Вы думали RootDirectory= директива вместо этого? Тот каталог использует chroot управляйте для переключения корня файловой системы, замеченной процессом каталогом, из которого Вы указываете, таким образом, от Вашего использования / для местоположения сценария, который похож, возможно, что Вы хотели... Однако использование RootDirectory= требует, чтобы у Вас был образ системы с двоичными файлами и библиотеками под ним. Как, у Вас должен быть a /bin/sh выполнять Ваш сценарий оболочки и a /lib с libc, и т.д. Обычно Вы не можете просто использовать RootDirectory= к примерно любому каталогу, который Вы любите...

Таким образом, мой совет здесь для устранения проблемы, которую Вы видите, состоит в том, чтобы просто обновить ExecStart= перечислять полный путь к Вашему сценарию.

9
ответ дан 23 November 2019 в 07:33

Я нашел относительным путям работу, но Вы используете полный путь для ExecStart. Это не ищет/home/someuser/somescript.sh, это ищет/somescript.sh, и это не то, где это.

Можно, вероятно, получить его работающий путем изменения ExecStart =./somescript.sh

0
ответ дан 23 November 2019 в 07:33

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

Похожие вопросы: