Domanda: Posso dare il via a un processo con systemd e assegnare a quel processo una directory di lavoro di mia scelta?
Ho un servizio con cui voglio iniziare systemd
. Quando viene avviato quel servizio, voglio essere in grado di assegnargli una directory di lavoro corrente. So come farlo se stavo usando init
, ma ho problemi con systemd
.
Ecco cosa sto cercando di far funzionare.
Il mio servizio
Ho creato una semplice utility ("listdir"), scritta in Python e inserita in /opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
Il mio file di configurazione
Ho quindi creato un listdir.service
file systemd
e lo ho inserito qui /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 eseguo il systemctl start listdir
mio registro di sistema registra la directory principale ("/") come directory di lavoro corrente. Certo, mi aspettavo /usr/local
come directory corrente, poiché pensavo che ExecStartPre
avrebbe cambiato directory prima di iniziare il processo.
Ovviamente, sto immaginando che systemd
funzionerebbe qualcosa di simile a uno script di shell (anche se so che non è uno script di shell). Qualcuno può darmi un'idea di cosa dovrei fare? È anche possibile impostare una directory di lavoro utilizzando systemd
? Grazie!
Modifica: il mio registro di sistema riporta un errore. (Ho appena notato.)
Executable path is not absolute, ignoring: chdir /usr/local
Quindi, chdir
è un comando shell e non un eseguibile stesso. Va bene. Ma c'è ancora un modo per me di cambiare directory usando systemd
?