Démarrer le programme X avec / etc / crontab sur Debian 6.0.4

J’essaie de lancer un X-Programme (par exemple, gedit ou Firefox) avec crontab. J’ai cherché longtemps, et les forums sont pleins d’aide, malheureusement, rien n’a été utile pour moi.

Ce que je cherche, c’est de lancer un programme X de Crontab. A des fins de test, j’ai fait ce qui suit:

Entrée dans mon “/ etc / crontab” (mon compte d’utilisateur est mrs, je suis connecté):

* * * * * mrs /bin/bash /tmp/test.sh 

cat /tmp/test.sh:

 #!/bin/bash DISPLAY=":0.0" gedit 1> /tmp/out 2>/tmp/err 

cat / tmp / err:

 No protocol specified (gedit:3456): Gtk-WARNING **: cannot open display: :0.0 

/ tmp / out est vide!

J’ai trouvé la solution! Le problème est que je n’avais pas de XAUTHORITY. J’ai donc dû obtenir une XAUTHENTICATION valide. J’ai beaucoup essayé avec xhost et xauth, mais cela n’a pas aidé. Maintenant, j’ai trouvé un autre moyen simple qui fonctionne avec gnome / gdm3, si vous avez access à la racine Crontab:

 export DISPLAY=":0.0" [ -z $USER ] && USER=$( who | awk '{ print $1 }' | sort | uniq >/tmp/test ) for I in /var/run/gdm3/*; do AUTHUSER="`echo $I | awk -F '-' '{ print $3 }'`" for J in $USER; do [ "${AUTHUSER}" = "${J}" ] || continue USER="$J" export XAUTHORITY="${I}/database" && break done done sudo -u ${USER} /Pfad/zum/xProgramm 

La variable $ USER kann man vorher belegen, andernfalls wird sie mit mindestens einem bereits eingeloggten Utilisateur beschrieben. Vorraussetzung ist allerdings, dass ein Utilisateur am System auch angemeldet ist.

Ich habe meurt getestet, und es klappt problemlos!