Frage: Kann ich einen Prozess mit systemd starten und diesem Prozess ein Arbeitsverzeichnis meiner Wahl zuweisen?
Ich habe einen Service, mit dem ich anfangen möchte systemd. Wenn dieser Dienst gestartet wird, möchte ich ihm ein aktuelles Arbeitsverzeichnis zuweisen können. Ich weiß, wie man das macht, wenn ich es benutzt habe init, aber ich habe Probleme damit systemd.
Hier ist, was ich versucht habe, um zu arbeiten.
Mein Service
Ich habe ein einfaches Hilfsprogramm ("listdir") erstellt, das in Python geschrieben und abgelegt wurde in /opt/bin/listdir:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
Meine Konfigurationsdatei
Ich habe dann eine listdir.serviceDatei für erstellt systemdund diese hier abgelegt /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
Problem
Wenn ich systemctl start listdirmein Systemprotokoll ausführe , zeichnet es das Stammverzeichnis ("/") als aktuelles Arbeitsverzeichnis auf. Natürlich habe ich /usr/localals aktuelles Verzeichnis erwartet , da ich dachte ExecStartPreVerzeichnisse zu wechseln bevor ich den Prozess starte.
Offensichtlich stelle ich mir vor, das systemdwürde so etwas wie ein Shell-Skript funktionieren (obwohl ich weiß, dass es kein Shell-Skript ist). Kann mir jemand eine Idee geben, was ich tun soll? Ist es überhaupt möglich, mit ein Arbeitsverzeichnis einzurichten systemd? Vielen Dank!
Bearbeiten: Mein Systemprotokoll meldet einen Fehler. (I hab gerade gemerkt.)
Executable path is not absolute, ignoring: chdir /usr/local
Ist chdiralso ein Shell-Befehl und keine ausführbare Datei. Okay. Aber gibt es noch eine Möglichkeit, mit Hilfe von Verzeichnisse zu wechseln systemd?