Ausführen eines Skripts, das den Befehl DISPLAY =: 1 als Dienst erfordert

314
user925635

Ich verwende Ubuntu 16.04 mit dem Xfce-Desktop + VNC-Server, um darauf zuzugreifen.

Ich habe ein Skript, das eine GUI-App startet und steuert. Ich kann es von einer Shell aus starten DISPLAY=:1 /home/script.shund führt meine App in der GUI einfach aus.

Ich brauche es jedoch, um als Dienst ausgeführt zu werden, so dass jedes Mal, wenn ich es schließe oder die App sich selbst schließt, script.shneu gestartet wird.

Ich habe versucht, Dienste unter /lib/systemd/system/oder zu erstellen, /etc/systemd/system/aber es wird nie gestartet. Ich vermute, es liegt daran, dass ich es übergeben muss, DISPLAY=:1um es zuerst in die GUI-Sitzung meines VNC-Servers zu rendern.

Ich bekomme Folgendes, wenn ich versuche, den Dienst zu starten:

[/etc/systemd/system/abc.service:5] Executable path is not absolute, ignoring: "DISPLAY=:1 /home/script.sh

Wie kann ich es ordnungsgemäß als Dienst einrichten?

0
Versuchen Sie Folgendes: [* Verwendung von Variablen in einer Systemd-Servicedatei? *] (Https://serverfault.com/a/868388) Kamil Maciorowski vor 5 Jahren 1
Scheint nicht zu funktionieren Umgebung = DISPLAY =: 1 user925635 vor 5 Jahren 0

1 Antwort auf die Frage

1
Ignacio Vazquez-Abrams

Umgebungsvariablen werden mithilfe einer oder mehrerer *Environment*Anweisungen in der Servicedatei festgelegt. Weitere systemd.exec(5)Informationen finden Sie in der Manpage.

Diese Sternchen sind verwirrend. Formatierungsfehler vielleicht? Kamil Maciorowski vor 5 Jahren 0
@ KamilMaciorowski: Nein. Mehrere Anweisungen, die alle "Environment" enthalten. Ignacio Vazquez-Abrams vor 5 Jahren 0