Hi, (Leap 15.2, KDE) Ich habe hier ein kleines Bash-Skript was eine Ausgabe per kdialog bringt. # kdialog --msgbox "Ausgabe" Das Skript arbeitet tadellos wenn ich es manuell aufrufe. Wird es aber via cron aufgerufen (die crontab des Users) erfolgt keine Ausgabe. Ich vermute das es da eine Unverträglichkeit zwischen Konsolenprozess und GUI gibt. Woher soll der crond wissen auf welchem Desktop er das ausgeben soll?! Wie mache ich das richtig? Bernd -- Die normative Kraft des Faktischen behindert die Entwicklung zum Besseren.
On Sun, 9 Jan 2022 18:44:59 +0100 Bernd Nachtigall <bnacht@web.de> wrote: Hallo Bernd!
Das Skript arbeitet tadellos wenn ich es manuell aufrufe. Ich vermute, aus einem Terminal, das in der graphischen Umgebung läuft und daher die Nummer des Display kennt.
Woher soll der crond wissen auf welchem Desktop er das ausgeben soll?! Indem Du ihm die Nummer des Displays mitteilst. In einem ähnlichen Konstrukt habe ich vor dem eigentlichen Kommando im Bash-Skrips export DISPLAY=:0 stehen. Ohne diesen export gibt es das gleiche Problem. Die Nummer des Displays mußt Du ggf. anpassen.
Viele Grüße Matthias
On 09.01.22 19:09, Matthias wrote:
On Sun, 9 Jan 2022 18:44:59 +0100 Bernd Nachtigall <bnacht@web.de> wrote:
Hallo Bernd!
Das Skript arbeitet tadellos wenn ich es manuell aufrufe. Ich vermute, aus einem Terminal, das in der graphischen Umgebung läuft und daher die Nummer des Display kennt.
Woher soll der crond wissen auf welchem Desktop er das ausgeben soll?! Indem Du ihm die Nummer des Displays mitteilst. In einem ähnlichen Konstrukt habe ich vor dem eigentlichen Kommando im Bash-Skrips export DISPLAY=:0 stehen. Ohne diesen export gibt es das gleiche Problem. Die Nummer des Displays mußt Du ggf. anpassen.
Dazu bitte noch $XAUTHORITY. Viele Grüße Ulf
On 09.01.22 19:42, Ulf Volmer wrote:
On 09.01.22 19:09, Matthias wrote:
Indem Du ihm die Nummer des Displays mitteilst. In einem ähnlichen Konstrukt habe ich vor dem eigentlichen Kommando im Bash-Skrips export DISPLAY=:0 stehen. Ohne diesen export gibt es das gleiche Problem. Die Nummer des Displays mußt Du ggf. anpassen.
Dazu bitte noch $XAUTHORITY.
Ich nehme alles zurück und behaupte das Gegenteil. $XAUTHORITY sollte per Default passen. Viele Grüße Ulf
Hi,
(Leap 15.2, KDE)
Ich habe hier ein kleines Bash-Skript was eine Ausgabe per kdialog bringt.
# kdialog --msgbox "Ausgabe"
Das Skript arbeitet tadellos wenn ich es manuell aufrufe.
Wird es aber via cron aufgerufen (die crontab des Users) erfolgt keine Ausgabe. Ich vermute das es da eine Unverträglichkeit zwischen Konsolenprozess und GUI gibt. Woher soll der crond wissen auf welchem Desktop er das ausgeben soll?!
Wie mache ich das richtig? Ich frage ab, ob das script im Terminal läuft: -------8<------ if [ -t 1 ] ## Nur auf konsole ausgeben
Am 09.01.22 um 18:44 schrieb Bernd Nachtigall: then echo "Hallo Terminal" fi -------8<------ Aus man bash: -t fd True if file descriptor fd is open and refers to a terminal. Geht natürlich nur, wenn die Shell bash ist. -- Gruss Bernd
Hi Bernd, Am 09.01.22 um 18:44 schrieb Bernd Nachtigall:
Hi,
(Leap 15.2, KDE)
Ich habe hier ein kleines Bash-Skript was eine Ausgabe per kdialog bringt.
# kdialog --msgbox "Ausgabe"
Das Skript arbeitet tadellos wenn ich es manuell aufrufe.
Wird es aber via cron aufgerufen (die crontab des Users) erfolgt keine Ausgabe. Ich vermute das es da eine Unverträglichkeit zwischen Konsolenprozess und GUI gibt. Woher soll der crond wissen auf welchem Desktop er das ausgeben soll?!
Wie mache ich das richtig?
Crontab und Grafik ?? Wie soll das zusammenpassen ? Ich könnte mir jedoch vorstellen, dass das nur dann funktioniert, wenn du im grafischen Mode angemeldet bist, wenn der Cronjob losläuft. Und dann muss das DISPLAY gesetzt sein, wie hier ja schon erwähnt wurde. Gruss Werner
On Mon, 10 Jan 2022 14:54:09 +0100 Werner Franke <werner_franke@arcor.de> wrote: Hallo Werner! Sorry, hier hätte ich einen kleinen Einspruch:
Crontab und Grafik ?? Wie soll das zusammenpassen ? Das muß auch nicht zusammenpassen, denn die beiden haben nichts miteinander zu tun. Cron startet lediglich zeitgesteuert regelmäßig wiederkehrend Skripte bzw. Kommandos. Was die dann machen oder nicht machen, ist Cron völlig egal.
Ich könnte mir jedoch vorstellen, dass das nur dann funktioniert, wenn du im grafischen Mode angemeldet bist, wenn der Cronjob losläuft. Das ist nicht nötig; s.o.
Und dann muss das DISPLAY gesetzt sein, wie hier ja schon erwähnt wurde. Das ist der entscheidende Punkt. Das Kommando, das etwas graphisch ausgeben will, muß wissen wohin und deshalb in einer Umgebung, in der die DISPLAY-Variable richtig gesetzt ist, laufen.
Viele Grüße Matthias
Hallo Matthias, Am 10.01.22 um 16:38 schrieb Matthias:
On Mon, 10 Jan 2022 14:54:09 +0100 Werner Franke <werner_franke@arcor.de> wrote:
Hallo Werner!
Sorry, hier hätte ich einen kleinen Einspruch:
Crontab und Grafik ?? Wie soll das zusammenpassen ? Das muß auch nicht zusammenpassen, denn die beiden haben nichts miteinander zu tun. Cron startet lediglich zeitgesteuert regelmäßig wiederkehrend Skripte bzw. Kommandos. Was die dann machen oder nicht machen, ist Cron völlig egal.
Das ist schon richtig, aber wenn ein Script mit Cron gestartet werden soll UND die Ausgabe von kdialog funktionieren soll - zumindest hatte ich die Frage so verstanden - dann haben beide schon etwa miteinander zu tun. In meiner Berufszeit habe ich etliche Cron-Scripte erstellt, aber auf die Idee, dass da drin auch grafische Ausgaben sein sollen, bin ich nie gekommen bzw. war nie gefordert, den die Scripte laufen meisstens dann, wenn niemand zusehen kann.
Ich könnte mir jedoch vorstellen, dass das nur dann funktioniert, wenn du im grafischen Mode angemeldet bist, wenn der Cronjob losläuft. Das ist nicht nötig; s.o.
Verstehe ich nicht. Wenn, wie oben, die Ausgabe von kdialog irgendwo ankommen soll, dann muss das Ziel existieren und das ist meisstens ein Bildschirm, der durch DISPLAY spezifiziert wird. Es kann natürlich auch ein VNC oder sowas sein.
Und dann muss das DISPLAY gesetzt sein, wie hier ja schon erwähnt wurde. Das ist der entscheidende Punkt. Das Kommando, das etwas graphisch ausgeben will, muß wissen wohin und deshalb in einer Umgebung, in der die DISPLAY-Variable richtig gesetzt ist, laufen.
viele Grüße Werner
On Mon, 10 Jan 2022 16:56:35 +0100 Werner Franke <werner_franke@arcor.de> wrote: Hallo Werner!
Das ist schon richtig, aber wenn ein Script mit Cron gestartet werden soll UND die Ausgabe von kdialog funktionieren soll - zumindest hatte ich die Frage so verstanden So hatte ich die Frage auch verstanden.
dann haben beide schon etwa miteinander zu tun. Das _Skript_ hat selbstverständlich etwas mit der graphischen Ausgabe von kdialog zu tun. Es hat u.a. dafür zu sorgen, daß kdialog die nötigen Bedingungn vorfindet.
Crontab und Grafik ?? Wie soll das zusammenpassen ? Bei Crontab sieht die Sache dagegen anders aus: Die Dateien dort steuert den crond und der hat mit der Graphikausgabe nichts zu tun, sondern ruft lediglich zur rechten Zeit das Skript auf.
Ich könnte mir jedoch vorstellen, dass das nur dann funktioniert, wenn du im grafischen Mode angemeldet bist, wenn der Cronjob losläuft. Das ist nicht nötig; s.o. Entschuldigung, ich hatte hier, warum auch immer, Cron-Dämon und nicht Cronjob gelesen. Selbstverständlich muß man graphisch angemeldet sein, wenn die Ausgabe von kdialog funktionieren soll; da gebe ich Dir völlig recht.
In meiner Berufszeit habe ich etliche Cron-Scripte erstellt, aber auf die Idee, dass da drin auch grafische Ausgaben sein sollen, bin ich nie gekommen bzw. war nie gefordert, den die Scripte laufen meisstens dann, wenn niemand zusehen kann. Das ist ja eigentlich auch der Sinn von cron, aber die Anforderungen ändern sich ;-). Ich habe übrigens auch ein von cron gestartetes Skript, aus dem heraus ein Kommando mit graphischer Ausgabe aufgerufen wird. Nette Spielerei und funktioniert seit Jahren klaglos.
Viele Grüße Matthias
participants (5)
-
Bernd Nachtigall
-
Bernd Obermayr
-
Matthias
-
Ulf Volmer
-
Werner Franke