[gelöst] User Cronjob mit yad script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

[gelöst] User Cronjob mit yad script

Beitrag von joe2017 » 08.03.2022 12:07:19

Hallo zusammen,

ich habe ein kleines Script geschrieben, welches ein YAD Fenster mit einem Infotext anzeigt.
Jedoch schaffe ich es aktuell nicht dieses via cron bei meinem User anzeigen zu lassen.

Für den Test lasse ich das Script alle 1 Minute ausführen. Leider ohne Erfolg. Ich habe folgendes getestet:

Code: Alles auswählen

sudo nano /etc/crontab
*/1 * * * * USER1 /path/to/script.sh
und

Code: Alles auswählen

sudo crontab -e USER1
*/1 * * * * /path/to/script.sh
Wenn ich im Terminal unter dem dem USER1 folgendes eingebe wird das Fenster angezeigt

Code: Alles auswählen

/bin/bash /path/to/script.sh
Zuletzt geändert von joe2017 am 08.03.2022 12:40:32, insgesamt 2-mal geändert.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: User Cronjob mit yad script

Beitrag von joe2017 » 08.03.2022 12:19:14

Ich habe gerade mein Script mit einem Befehl erweitert.

Code: Alles auswählen

touch /path/file.txt
Mit dem Eintrag in die /etc/crontab wurde die Datei angelegt. Jedoch wurde mit das YAD Fenster nicht angezeigt.

Code: Alles auswählen

sudo nano /etc/crontab
*/1 * * * * USER1 /path/to/script.sh
Hat jemand eine Idee weshalb das Fenster nicht geöffnet wird.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: User Cronjob mit yad script

Beitrag von MSfree » 08.03.2022 12:29:23

joe2017 hat geschrieben: ↑ zum Beitrag ↑
08.03.2022 12:19:14
Hat jemand eine Idee weshalb das Fenster nicht geöffnet wird.
cron weiß nichts darüber:
  • wer überhaupt eingelogt ist
  • an welchem Dispaly dieser eingelogt ist
  • mit welchem Schlüssel (MIT magic cookie) das Display gesichert ist
Wenn du graphisch irgendwas machen willst, geht das aus der aktuellen graphischen Login-Session und cron läuft nunmal nicht in der Session.

Dein Skript muß sich also erst darum kümmern, das Display herauszufinden, in dem die Session läuft. Da cron das Skript wohl im Kontext eines bestimmten Benutzers ausführt, ist zumindest der Benutzer bekannt, so daß du dir den Magic-Cookie darüber besorgen könntest.

Achso, Gnome läuft üblicherweise nicht über Xorg sondern in Wayland. Was ich oben geschrieben habe, bezieht sich auf Xorg. Ob das nahtlos auf Wayland anzuwenden ist, weiß ich nicht.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: User Cronjob mit yad script

Beitrag von joe2017 » 08.03.2022 12:35:51

Mein User läuft aktuell unter Gnome. Meintest du folgendes?
XDG_SESSION_DESKTOP=default
XDG_SESSION_TYPE=x11
DISPLAY=:0

Wie würde das in meinem Script aussehen? Ich bin mir jetzt nicht sicher was ich abfragen muss und wie ich das in meinem Script angeben kann, damit dies auch in meiner richtigen Session angezeigt wird. Der User ist übrigens immer der Selbe und sollte somit immer in der Selben Session/Desktop auf jedem Client arbeiten.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: User Cronjob mit yad script

Beitrag von joe2017 » 08.03.2022 12:40:12

Ich habs gefunden. Vielen Dank für den Tipp.

Der Eintrag im Crontab sieht wie folgt aus:

Code: Alles auswählen

*/1 * * * * USER1 export DISPLAY=:0 && /path/to/script.sh

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: [gelöst] User Cronjob mit yad script

Beitrag von MSfree » 08.03.2022 13:18:45

DISPLAY=:0 ist aber nicht allgemeingültig. Ich sitze hier z.B. gerade vor einer Kiste, wo das Display hostname:3.0 heißt. Ausserdem kommt in der Regel noch das Magic Cookie zum Tragen, das du über die Umgebungsvariable XAUTHORITY=/home/Usernam/.Xauthority definiert werden kann/muß.

Antworten