Question: Puis-je lancer un processus avec systemd et lui attribuer un répertoire de travail de mon choix?
J'ai un service avec lequel je veux commencer systemd
. Lors du démarrage de ce service, je souhaite pouvoir lui attribuer un répertoire de travail en cours. Je sais comment faire si j'utilisais init
, mais j'ai des problèmes avec systemd
.
Voici ce que j'ai essayé de faire fonctionner.
Mon service
J'ai créé un utilitaire simple ("listdir"), écrit en Python et placé dans /opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
Mon fichier de configuration
J'ai ensuite créé un listdir.service
fichier pour systemd
et l' ai placé ici /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
Problème
Lorsque je lance systemctl start listdir
mon journal système, le répertoire racine ("/") est enregistré comme répertoire de travail actuel. Bien sûr, je m'attendais /usr/local
au répertoire actuel, car je pensais pouvoir ExecStartPre
changer de répertoire avant de lancer le processus.
Évidemment, j'imagine que systemd
cela fonctionnerait comme un script shell (même si je sais que ce n'est pas un script shell). Quelqu'un peut-il me donner une idée de ce que je devrais faire? Est-il même possible de définir un répertoire de travail en utilisant systemd
? Merci!
Modifier: mon journal système signale une erreur. (Je viens de remarquer.)
Executable path is not absolute, ignoring: chdir /usr/local
Donc, chdir
est une commande shell, et non un exécutable lui-même. D'accord. Mais est-il encore possible pour moi de changer de répertoire à l'aide systemd
?