Starten der GUI-Anwendung auf dem Display anderer Benutzer über Root-Cron

Starten der GUI-Anwendung auf dem Display anderer Benutzer über Root-Cron

Ich versuche, die Verbindung eines VPN-Tunnels per Cron beim Systemstart zu automatisieren.
Ich habe ein Bash-Skript, das durch Roots-Cron ausgelöst wird sudo crontab -e(weil einige andere Befehle erhöhte Rechte erfordern).

Mit piactl (CLI) wäre ich zufrieden, aber beim Verbindungsversuch erhalte ich die Meldung, dass der Client gestartet werden muss. Daher ...
Einer der Schritte, die ich ausführen möchte, besteht darin, eine GUI-Anwendung (PIA-Client) auf dem Display meines Nicht-Root-Benutzers zu starten.

Der folgende Befehl funktioniert direkt vom Terminal aus:

sudo su
runuser -l $username -c 'DISPLAY=:0 /opt/piavpn/bin/pia-client &> /dev/null &'

Wenn ich das jedoch in mein Skript einfüge, funktioniert es nicht.
Das Skript ist ausführbar chmod +x /path/to/script.shund andere Befehle im selben Skript funktionieren.

Hat hier jemand eine Lösung?

Antwort1

Das ist peinlich, da ich genau diese Frage erst vor ein paar Tagen gestellt habe. Mir war das noch nicht einmal klar ...

Die Lösung besteht darin, den vollständigen Pfad zum Befehl hinzuzufügen, da der Befehl nicht in Cron enthalten ist PATH.
Der Code wurde wie folgt geändert:

sudo su
/sbin/runuser -l $username -c 'DISPLAY=:0 /opt/piavpn/bin/pia-client &> /dev/null &'

Quelle/Anerkennung:Kommentar von @steeldriver zu dieser Frage

verwandte Informationen