it-swarm.com.de

So leiten Sie die Ausgabe in eine Datei um, wenn Sie als Systemd-Dienst ausgeführt werden

Ich habe Probleme, STDOUT & STDERR an eine Datei weiterzuleiten, wenn ein Programm als systemd-Dienst ausgeführt wird. Ich habe versucht, der Datei .service Folgendes hinzuzufügen:

ExecStart=/apppath/appname > /filepath/filename 2>&1

Das geht aber nicht. Die Ausgabe endet in/var/log/messages und kann mit journalctl angezeigt werden, ich möchte jedoch eine separate Datei.

Ich habe auch versucht, StdOutput=tty Einzustellen, kann dies jedoch nicht in eine Datei umleiten.

Jede Hilfe wäre dankbar.

32
MichaelB76

systemd.service(5) sagt:

ExecStart =

Befehle mit ihren Argumenten, die beim Starten dieses Dienstes ausgeführt werden.

Also führt systemd Ihr /apppath/appname mit Argumenten >, /filepath/filename, 2>&1

Versuchen:

ExecStart=/bin/sh -c '/apppath/appname > /filepath/filename 2>&1'
46

Versuchen:

ExecStart=/usr/bin/sh -c "/apppath/appname > /filepath/filename 2>&1"

ExecStart setzt voraus, dass das erste Argument eine Binärdatei ist (keine Ausnahmen) und keine Pipes oder Umleitungen zulässt. Verwenden Sie daher ExecStart, um eine Shell zu starten, in der Sie alle erforderlichen Aktionen ausführen können.

5
Casey