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.service
Datei für erstellt systemd
und 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 listdir
mein Systemprotokoll ausführe , zeichnet es das Stammverzeichnis ("/") als aktuelles Arbeitsverzeichnis auf. Natürlich habe ich /usr/local
als aktuelles Verzeichnis erwartet , da ich dachte ExecStartPre
Verzeichnisse zu wechseln bevor ich den Prozess starte.
Offensichtlich stelle ich mir vor, das systemd
wü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 chdir
also ein Shell-Befehl und keine ausführbare Datei. Okay. Aber gibt es noch eine Möglichkeit, mit Hilfe von Verzeichnisse zu wechseln systemd
?
[Service]
Abschnitt aufgenommen?