Запитання: Чи можу я розпочати процес із systemd і призначити цьому процесу робочу директорію на власний вибір?
У мене є сервіс, з якого я хочу розпочати systemd
. Коли ця служба запускається, я хочу мати можливість призначити їй поточну робочу директорію. Я знаю, як це зробити, якщо я використовував init
, але у мене виникають проблеми systemd
.
Ось що я намагався налагодити роботу.
Моя служба
Я створив просту утиліту ("listdir"), написану на Python та розміщену в /opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
Мій файл конфігурації
Потім я створив listdir.service
файл systemd
і розмістив його тут /lib/systemd/system/listdir.service
:
[Unit]
Description=Test of listing CWD.
[Service]
ExecStartPre=chdir /usr/local
ExecStart=/opt/bin/listdir
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
Проблема
Коли я запускаю systemctl start listdir
системний журнал, записує кореневий каталог ("/") як поточний робочий каталог. Звичайно, я очікував /usr/local
як поточний каталог, оскільки думав ExecStartPre
змінити каталоги перед запуском процесу.
Очевидно, я думаю, що це systemd
могло б працювати як-небудь як скрипт оболонки (хоча я знаю, що це не сценарій оболонки). Чи може хтось дати мені уявлення про те, що я повинен робити? Чи можливо навіть встановити робочий каталог за допомогою systemd
? Дякую!
Редагувати: Мій системний журнал повідомляє про помилку. (Я щойно помітив.)
Executable path is not absolute, ignoring: chdir /usr/local
Отже, chdir
це команда оболонки, а не сама виконувана програма. Добре. Але чи є ще якийсь спосіб для мене зміни каталогів за допомогою systemd
?