xvfb-run [Befehl] als Systemd-Dienst beim Start

641
Lw Bi

Ich möchte Spotify auf meinem Homeserver (Ubuntu 16.04) im Hintergrund laufen lassen, damit ich es für das Audio-Streaming an angeschlossene Lautsprecher ( SpotifyConnect ) verwenden kann.

Damit xvfb-run -a spotify --disable-gpufunktioniert das einwandfrei (manuell). Aber ich versuche seit Tagen, diesen Befehl beim Systemstart auszuführen. Ich habe verschiedene Methoden ausprobiert, aber jetzt habe ich mich für systemd entschieden, weil es so aussieht, als ob ich sowieso den gleichen Fehler bekomme.

Wenn ich den Befehl manuell ausführe, gibt es ungefähr 9 Mal einen kleinen Fehler, aber er funktioniert einwandfrei:

(spotify: 3825): GLib-GIO-CRITICAL **: g_dbus_connection_send_message: Die Assertion 'G_IS_DBUS_CONNECTION (Verbindung)' ist fehlgeschlagen

Aber als systemd Service bekomme ich einfach

systemd 1 : Start des Spotify-Dienstes.

Jan 08 17:34:37 ​​s1 systemd [3574]: spotify.service: Ausführen von: / usr / bin / xvfb-run spotify

Jan 08 17:34:37 ​​s1 xvfb-run [3574]: beendet aufgerufen, nachdem eine Instanz von 'std :: logic_error' geworfen wurde

Jan 08 17:34:37 ​​s1 xvfb-run [3574]: what (): basic_string :: _ S_construct null ungültig

08. Januar 17:34:37 ​​s1 xvfb-run [3574]: Abgebrochen (Core dumped)

Das Gleiche gilt, wenn ich den Befehl nicht von "spotify.service" aus ausführe, sondern ein ShellScript ausführt, das den Befehl enthält. Natürlich funktioniert das Skript manuell. Es gibt keine Unterschiede ohne -aund --disable-gpu(außer einigen gpu-Fehlern), also ignoriere ich es erstmal . Mein spotify.service in / etc / systemd / system:

[Unit] Description=Spotify Service After=network.target network-online.target  [Service] EnvironmentFile=/root/Schreibtisch/SpotifyServiceHelp ExecStart=/usr/bin/xvfb-run $ARG  [Install] WantedBy=multi-user.target 

Die EnvironmentFile gibt vor, dass systemd "spotify" als einen anderen Befehl und nicht als Argument sieht. SpotifyServiceHelp enthält also nur ARG=spotify.

Weiß jemand, was das Problem ist, oder haben Sie eine Problemumgehung, um beispielsweise den Logikfehler zu "ignorieren"? Vielen Dank.

0

0 Antworten auf die Frage