Accueil > Technique > Informatique > Shell bash > Lancer une application graphique avec cron.
Robert Sebille
Lancer une application graphique avec cron.
lundi 10 octobre 2011, par
J’ai un peu cherché, là ! ;)
Pour lancer une application graphique (ou un notify dbus, par exemple) avec cron, il faut d’abord s’ajouter à la liste des utilisateurs autorisés à se connecter au serveur X, ceci à l’aide du programme xhost.
Par exemple sur Debian :/usr/bin/xhost +si:localuser:$(whoami)
ou sur ma SLES au boulôt :/usr/bin/xhost +local:$(whoami)
voyez "man xhost" pour avoir la liste adéquate des "family:name" correspondant à votre système.
Ensuite, on peut lancer des commandes graphiques dans cron
Exemple dans ma SLES0 10 * * 1-5 DISPLAY=:0.0 notify-send "Backups done" "`date`"
et dans Debian0 10 * * 1-5 export DISPLAY=:0.0; send-notify "Backups done" "`date`"
le export n’est pas vraiment nécessaire, si la commande# echo $DISPLAY
donne un résultat tel que :0 ou :0.0 etc.
Enfin, si on utilise cron, il sera avisé d’automatiser l’ajout de l’utilisateur du serveur X, et avant le lancement de la commande graphique dans le cron. On peut facilement faire cela via le cron ou les applications lancées automatiquement au démarrage de la session.
On ne peut pas le faire via le cron.
Ca ne marche pas avec les applications lancées automatiquement au démarrage de session (sans doute parce que whoami ne retourne pas encore à ce moment le user ?)
On peut le faire dans
~/.profile
, qui est lu et excécuté quand on lance un login shell (c.-à-d, quand on se connecte au système).
Exemple pour la SLES :
vim ~/.profile
/usr/bin/xhost +local:$(whoami)
Source : http://forums.archlinux.fr/viewtopic.php?t=9213&p=78411