Делает systemd, имеют спецификатор для Рабочего Каталога

Когда я указываю работу direcotry в файле единицы, я хотел бы обратиться к нему от раздела ExecStart через спецификатор т.е.

[Unit]
Description=A test daemon that says hello
[Service]
Type=oneshot
WorkingDirectory=/home/foo/scipts
ExecStart="%<<WORKING_DIRECTORY_SPECIFIER>>/echo_hello.sh"
RemainAfterExit=yes

Действительно ли это возможно с Systemd и если это не, там какие-либо обходные решения?

0
задан 14 February 2019 в 07:35

2 ответа

Нет, можно использовать ~ или абсолютный путь к каталогу. Осторожный, хотя: ~ вероятно, укажет на /root/ как дом пользователя единицы.

и сам WorkingDirectory понимает спецификаторы, но это не пользователь, конкретный за исключением

"%g"    User group  
"%G"    User GID    
"%u"    User name   
"%U"    User UID    

но это склонно принимать значение по умолчанию к пользовательскому корню.

0
ответ дан 26 October 2019 в 06:20

Вам не нужно специально указывать рабочий каталог в ExecStart, так как все команды будут запускаться так, как если бы вы его уже указали. В этом суть.

НЕЛЬЗЯ использовать ~, так как при этом будет использоваться $HOME пользователя $USER, под которым запущена служба. Вместо этого используйте относительные пути.

Если ваш WorkingDirectory указывает на /home/foo/scripts/, вам просто нужно использовать ExecStart=./somescript.sh Если у вас есть подкаталоги, это то же самое - ExecStart=subdir1/subdir2/somescript.sh. WorkingDirectory в основном представляет собой cd для служб.

4
ответ дан 2 December 2020 в 21:04

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

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