Pergunta: Posso iniciar um processo com systemd e atribuir a esse processo um diretório de trabalho de minha escolha?
Eu tenho um serviço que eu quero começar systemd
. Quando esse serviço estiver sendo iniciado, desejo poder atribuir a ele um diretório de trabalho atual. Eu sei como fazer isso se estivesse usando init
, mas estou tendo problemas systemd
.
Aqui está o que eu tenho tentado trabalhar.
Meu serviço
Eu criei um utilitário simples ("listdir"), escrito em Python, e colocado em /opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
Meu arquivo de configuração
Eu criei um listdir.service
arquivo para systemd
e coloquei aqui /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
Problema
Quando executo systemctl start listdir
meu log do sistema, o diretório raiz ("/") é registrado como o diretório de trabalho atual. Obviamente, eu esperava /usr/local
o diretório atual, pois pensei ExecStartPre
em mudar de diretório antes de iniciar o processo.
Obviamente, estou imaginando que systemd
funcionaria algo como um script de shell (mesmo sabendo que não é um script de shell). Alguém pode me dar uma idéia do que devo fazer? É possível definir um diretório de trabalho usando systemd
? Obrigado!
Editar: o log do meu sistema está relatando um erro. (Acabei de perceber.)
Executable path is not absolute, ignoring: chdir /usr/local
Portanto, chdir
é um comando shell, e não um executável em si. OK. Mas ainda há alguma maneira de alterar os diretórios usando systemd
?