Comment démarrer une application GUI depuis cron?

18

J'ai besoin d'exécuter une applet Java à partir d'un Firefox. Le problème est que je dois exécuter ce Firefox à partir d'un cron. Si je cours à partir de la ligne de commande et que son travail fonctionne bien, mais quand j'ai mis la commande dans le cron, cela a échoué:

*/1 * * * * firefox http://domain.com/iqms/packetloss/iqmspacket2.html
fadabi Nawi
la source
1
Vous pouvez utiliser la bibliothèque java de Selenium si vous avez besoin de plus de fonctions que de simplement l'ouvrir.
Övünç Metin
Vous pouvez également utiliser Selenium avec python, ce qui est plus facile pour les scripts.
ESala

Réponses:

25

Cron s'exécute dans un environnement qui ne connaît rien du gestionnaire d'affichage ( $DISPLAYn'est pas défini). Votre fenêtre de terminal dans laquelle vous avez testé a cet ensemble pour cela. Si vous l'essayez dans un "vrai" terminal, ou via SSH, vous le verrez se casser.

Si vous n'avez qu'un seul serveur X en cours d'exécution, il suffit de spécifier l'affichage pour fonctionner:

* * * * *    DISPLAY=:0 firefox ...

Vous pourriez probablement consacrer plus d'efforts à déterminer sous quel écran il se trouve plutôt que de le supposer, :0mais cela fonctionnera probablement la plupart du temps.

Si vous avez juste besoin de recharger beaucoup quelque chose, regardez Tab Auto Reload ou des plugins Firefox similaires.

Oli
la source
J'ai trouvé cette réponse mais ne démarre toujours pas le Firefox. Après quelques recherches, j'ai constaté que je devais exécuter en tant qu'utilisateur valide à la place de root. * * * * * "DISPLAY =: 0.0 / usr / bin / firefox -new-window x.com/iqms/packetloss/iqmspacket2.html "
fadabi Nawi
1
@fadabiNawi Un moyen plus simple de gérer cela serait d'installer la ligne cron dans la crontab de l'utilisateur correct. Connectez-vous comme vous voulez, etcrontab -e
Oli
7

J'ai trouvé cette réponse que je cherche pour ajouter à oli:

Après quelques recherches, j'ai constaté que je devais exécuter en tant qu'utilisateur valide à la place de root.

* * * * * su fadabi -c "DISPLAY=:0.0 /usr/bin/firefox -new-window x.com/iqms/packetloss/iqmspacket2.html"; 

tq

fadabi Nawi
la source
Cela a aidé, merci beaucoup! Juste une note: le chemin complet vers Firefox est obligatoire, je ne m'en rendais pas compte et cela n'a pas fonctionné
aexl