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.servicefile systemde 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 listdirmio registro di sistema registra la directory principale ("/") come directory di lavoro corrente. Certo, mi aspettavo /usr/localcome directory corrente, poiché pensavo che ExecStartPreavrebbe cambiato directory prima di iniziare il processo.
Ovviamente, sto immaginando che systemdfunzionerebbe 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?