web-dev-qa-db-fra.com

Cron fonctionne, mais le travail planifié pour ouvrir une page Web dans chrome ne fonctionne pas

Mises à jour START

  1. Un de mes amis vient de répondre à cette question. J'ai besoin de faire cela export DISPLAY=:0 && <my GUI dependent command here> J'attends qu'il poste la réponse ici.
  2. J'ai essayé /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL & sans le & aussi. Échoue encore. Succeeds directement en ligne de commande.
  3. Il n'y a pas de fichier /var/log/cron sur ma machine. Question subsidiaire: Comment puis-je l'obtenir?

Mises à jour END

J'ai un document Google que je dois mettre à jour à intervalles réguliers plusieurs fois par jour. Le contenu qui formerait une mise à jour particulière ne peut pas être prédit ou déterminé par programme. Donc, la meilleure solution que j'ai est de laisser la page Google Doc particulière s'ouvrir automatiquement à intervalles fixes, puis d'y ajouter manuellement les données.

Le problème est que ce qui fonctionne directement sur la ligne de commande ne fonctionne pas dans crontab. Voici ce que j'ai essayé (en utilisant un intervalle de 2 minutes juste pour le test) -

*/2 * * * * date >> /tmp/crontest
*/2 * * * * /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL &
  1. Si je cat /tmp/crontest, je vois les horodatages ajoutés à chaque minute.
  2. Si je viens d’essayer /opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL sur le shell, cela fonctionne comme prévu
  3. Mais PARTICULAR_GOOGLE_DOC_URL ne s'ouvre pas dans mon chrome toutes les 2e minute comme il se doit. (encore une fois: j'utilise un intervalle de 2 minutes juste pour les tests)

Qu'est-ce que je fais mal? Comment dois-je résoudre ce problème? Un autre moyen de réaliser ce que j'ai besoin de faire?

Merci d'avance.

6
Sumeet Pareek

Editez la crontab avec export DISPLAY wrapper:

2 * * * * export DISPLAY=:0 && firefox %u

Cela ouvre un onglet Firefox vide, vous pouvez utiliser votre URL favorite.

8
Vishal Vashista

cron est destiné aux travaux en ligne de commande et exécute les commandes avec un ensemble très limité de variables d'environnement - seulement HOME, LOGNAME, PATH, et Shell.

Au moins, chrome nécessitera que DISPLAY soit défini. Il peut également être malheureux sans d’autres variables (par exemple, les variables liées à DBUS.). Exécutez env dans un terminal pour voir votre environnement actuel.

4
chronitis

L'environnement que vous obtenez pour un cronjob est très limité. Par exemple, vous ne disposez pas de la variable DISPLAY requise pour ouvrir le chrome.

Enveloppez votre commande dans un script

#!/bin/sh
export DISPLAY=:0
/opt/google/chrome/chrome PARTICULAR_GOOGLE_DOC_URL

Pas vraiment sûr d'avoir besoin de plus de variables pour que cela fonctionne. J'ai fait un script similaire qui a démarré konsole (terminal dans KDE) et qui a fonctionné dans cron.

3
McNisse