Starten einer X11-Anwendung (Firefox) über crontab

Starten einer X11-Anwendung (Firefox) über crontab

Ich möchte eine Crontab schreiben, die Firefox jede Minute öffnet (nur um es zu testen, ich weiß, dass es keinen Sinn ergibt). Mein Problem ist, dass, obwohl die Crontab aktiv ist, nichts passiert. So sieht meine Crontab aus:

SHELL=/bin/bash
PATH=~/bin:/usr/bin:bin
* * * * * export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

Irgendeine Idee, warum es nicht funktioniert?

Antwort1

export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

Allein durch das Betrachten des obigen Cron-Befehls kann ich erkennen, warum er nicht funktioniert. Die Verwendung des exportBefehls ist

export name[=word]...

In POSIX-Shells werden die restlichen Wörter export DISPLAY=:0.0als andere Shell-Variablen behandelt, die in die Umgebung exportiert werden sollen – nicht als Befehle, die ausgeführt werden. POSIX (Ausgabe 7, Ausgabe 2018) gibt außerdem an, dass einNamesollte sein

ein Wort, das ausschließlich aus Unterstrichen, Ziffern und Buchstaben des portablen Zeichensatzes besteht.

Dies bedeutet, dass Shell-Variablennamen keine Zeichen wie enthalten dürfen. Daher würde der Versuch, in die Liste der zu exportierenden Variablennamen /aufzunehmen, einen Fehler mit einer Meldung wie oder auslösen ./usr/bin/firefoxnot a valid identifierbad variable name


Außerdem xhostwird der Befehl falsch verwendet. Führen Sie xhostihn einzeln aus, um zu sehen, ob Sie Ihr Benutzerkonto als zulässigen Benutzer hinzufügen müssen. Dies sollte nur einmal ausgeführt werden müssen und nicht von Cron geplant werden.


Sofern kein anderer Mechanismus vorhanden ist, der Programme daran hindert, eine Verbindung zum X-Anzeigeserver herzustellen, können die obigen Zeilen einfach durch Folgendes ersetzt werden:

DISPLAY=:0.0
* * * * * /usr/bin/firefox

SHELLDadurch sollte jede Minute ein neues Firefox-Fenster geöffnet werden. Es ist auch nicht erforderlich, die Umgebungsvariable anzugeben – und da Sie den vollständigen Pfad für die firefoxausführbare Datei angeben, muss die PATHVariable auch nicht festgelegt werden.


Siehe auch:POSIX-Spezifikation fürexport

verwandte Informationen