Em systemd > = 227 você deve poder usar:
[Service]
WorkingDirectory=/usr/local
para que seu script seja executado lá.
( DOCS )
Eu tenho um serviço que quero começar com systemd . Quando esse serviço está sendo iniciado, desejo poder atribuí-lo a um diretório de trabalho atual. Eu sei como fazer isso se eu estivesse usando init , mas estou tendo problemas com systemd .
Aqui está o que eu tenho tentado trabalhar.
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())
Eu criei um arquivo listdir.service para systemd e o 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
Quando executo systemctl start listdir , meu log do sistema registra o diretório raiz ("/") como o diretório de trabalho atual. Obviamente, eu esperava /usr/local como o diretório atual, pois achei que ExecStartPre mudaria de diretórios antes de iniciar o processo.
Obviamente, estou imaginando que systemd funcionaria como um shell script (mesmo sabendo que não é um shell script). Alguém pode me dar uma ideia do que eu deveria estar fazendo? É possível definir um diretório de trabalho usando systemd ? Obrigado!
Edit: Meu log do sistema está relatando um erro. (Eu acabei de notar.)
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 ?
Em systemd > = 227 você deve poder usar:
[Service]
WorkingDirectory=/usr/local
para que seu script seja executado lá.
( DOCS )
Tags systemd