CRONTAB execute la moitié d'un script shell

Bonjour,

j'avais posté un message afin d'etre éclairer sur un script trés simpliste qui serait exécuter avec crontab sous linux. Mais ce n'est pas grave le script que j'ai fonctionne mais je m'explique :

#!/bin/sh

killall -9 /usr/lib/mozilla-firefox-1.0.6/mozilla-firefox-bin
mozilla-firefox www.google.fr

Voila mon problème je dois lancer une tâche planifiée sous linux qui ferme la page actuelle de mozilla et en ouvre une nouvelle ( ici j'ai pris l'exemple de google.fr mais ça n'a pas d'importance c'est pour expliquer ) et cela tous les jours a 5h du matin .

je me log donc en root et je tape crontab -e , voila ce que j'y met :

*/1 * * * * /home/user1/Desktop/script.sh

ps : ici j'ai fait en sorte d'éxécuter le script toutes les minutes pour voir si cela fonctionne .

Enfait le script ferme bien la page mozilla mais il n'ouvre pas google.fr juste aprés avoir fermé la précédente .

or si je clique sur mon script.sh il ferme la page mozillia et ouvre la nouvelle .

Donc where is the problem sir ? ^^

Merci d'avance
Configuration: Linux Mandriva
Firefox 1.0.7

47 réponses

Résumé de la discussion

Un script lancé par cron sous Linux est censé fermer Firefox puis ouvrir google.fr, mais l’ouverture ne se produit pas automatiquement lorsque le script est déclenché par crontab. Plusieurs réponses expliquent que cron fonctionne avec un environnement minimal et qu’aucune variable DISPLAY n’est définie, ce qui empêche le lancement graphique et nécessite d’ajouter DISPLAY ou -display. D’autres conseils recommandent d’expliciter le chemin et les variables, par exemple DISPLAY=:0.0 au début du script et éventuellement d’exporter le PATH ou de charger des éléments du profil. Une approche pratique consiste à lancer Firefox avec le display approprié et à consigner les sorties du cron dans un fichier log, afin de diagnostiquer d’éventuels messages d’erreur.

Bobot (l’IA à votre service)
  1. Contributeur
    cron tourne avec un environement minimum. Il n'a donc pas la variable DISPLAY définie pour demarrer Mozilla.
    Dans le shell, faire echo $DISPLAY et mettre cette valeur dans le script:
    mozilla-firefox -display XXX www.google.fr
    0
    1. merci d'avoir répondu =)

      mais cela ne fonctionne toujours pas ...

      j'ai fais :

      [root@localhost user1]# echo $DISPLAY
      :0.0

      donc j'ai :

      #!/bin/sh

      killall -9 /usr/lib/mozilla-firefox-1.0.6/mozilla-firefox-bin
      mozilla-firefox -display 0.0 www.google.fr

      Et cela ne fonctionne pas, dsl je débute sous linux .
      Que puis je faire ?
      0
      1. Contributeur
        les : sont importants
        mozilla-firefox -display :0.0 www.google.fr

        sinon, récupérer les erreurs:
        mozilla-firefox -display :0.0 www.google.fr 1>/tmp/log 2>&1

        et voir dans /tmp/log
        0
        1. j'ai fais ce que tu ma dit pour la recup des érreur , j'obtient ceci:

          "log2" 0L, 0C
          E576: viminfo: '>' manquant à la ligne 0^@
          E576: viminfo: '>' manquant à la ligne ^I+^I1^I5^@
          E576: viminfo: '>' manquant à la ligne ^I+^I2^I32^@
          E576: viminfo: '>' manquant à la ligne ^I+^I3^I32^@
          E576: viminfo: '>' manquant à la ligne ^I+^I4^I24^@
          E576: viminfo: '>' manquant à la ligne ^I+^I2^I8^@
          E576: viminfo: '>' manquant à la ligne ^I+^I3^I8^@
          E576: viminfo: '>' manquant à la ligne ^I+^I1^I3^@
          Appuyez sur ENTRÉE ou tapez une commande pour continuer

          je précise aussi que l'orsque je veux éditer crontab ( crontab -e ) j'ai le même message idem quand j'enregistre les modifications mais les modfications sont prises .
          0
          1. Contributeur
            Ca c'est des erreurs vim, le fichier .viminfo .vimrc ou .exrc doit être mauvais.

            attention aux espaces:
            mozilla-firefox -display :0.0 www.google.fr"espace" 1>/tmp/log"espace" 2>&1

            et qu'affiche cat /tmp/log
            0
            1. le cat /tmp/log n'affiche rien .

              merci quand meme de te pencher sur mon cas je suis sur qu'en à beaucoup et surtout des plus complexes que celui ci.

              moi qui pensais qu'on me traittrais lol parce que c'est du basique de chez basique ... bin le basique il me chauffe la =)
              0
              1. Modérateur
                Salut,

                chez moi ça marche
                #!/bin/bash
                killall -9 firefox-bin
                /usr/bin/firefox --display=:0.0 'www.google.fr'&


                les : sont importants
                mozilla-firefox -display :0.0 www.google.fr

                dubcek a oublié un tiret
                --display au lieu de -display
                0
                1. Contributeur
                  Affiche plus d'info, modifier le script:

                  #!/bin/sh
                  set -x
                  set
                  killall -9 /usr/lib/mozilla-firefox-1.0.6/mozilla-firefox-bin
                  mozilla-firefox -display :0.0 www.google.fr

                  modifer le crontab

                  */1 * * * * /home/user1/Desktop/script.sh >/tmp/log 2>&1
                  0
                  1. merci a vous mais alors je met

                    mozilla-firefox -display :0.0 www.google.fr **

                    ou

                    /usr/bin/firefox --display=:0.0 'www.google.fr'&

                    car la , ya un =

                    J'ai formaté la machine linux car le problème de vim la affiche de temps en temps qu'il enregistre pas les modif dans le crontab.

                    Donc je vais reprendre a zéro.
                    Merci encore.
                    0
                    1. Contributeur
                      Linux, c'est pas Windaube ... on ne reformatte pas pour un problem vim, il faut corriger les fichiers de démarrage vim

                      Les 2 notations display sont valides, la mienne étant la notation X d'origine.

                      un job cron n'a pas l'environnement qu'un utilisateur a après un login. Essayer de mettre dans le script : . .profile
                      si le login shell est sh, ksh ou bash
                      0
                      1. enfait j'ai du céder le pc a un stagiaire dc je vais réinstaller linux sur un autre pc c'est pour cela .

                        à la base c'était un script.sh, que veut tu dire par :

                        " un job cron n'a pas l'environnement qu'un utilisateur a après un login. Essayer de mettre dans le script : . .profile
                        si le login shell est sh, ksh ou bash "

                        ?
                        Merci d'avance.
                        0
                        1. Contributeur
                          Au login, le shell exécute des fichiers de config, .profile, .cshrc, .kshrc qui vont définir tout l'environnement: PATH, et plein d'autres variables, affichées par la commande set.
                          Le cron n'exécute pas ces fichiers et donc le script tourne avec le minimum et il peut manquer des définitions. On peut le voir avec la commande set dans le script.
                          0
                          1. ok je vais tester ce que tu m'a donner dans le message précédent vers 12h30 maxi 13h donc je vous redirai quoi

                            Merci encore
                            0
                            1. re Bonjour,

                              je n'ai pas pu tester cela mais ce midi c'est certains je test et je te dis quoi, par contre pour ce que tu m'a dit :

                              un job cron n'a pas l'environnement qu'un utilisateur a après un login. Essayer de mettre dans le script : . .profile

                              le .profile je le place ou dans le script ?

                              merci d'avance.
                              0
                              1. Contributeur
                                au début, après le #! ... mettre:
                                .<espace> .profile
                                0
                                1. je n'ai pas rajouter le .profile et cela ne fonctionne toujours pas donc je vais tenter avec on verra bien.
                                  0
                                  1. Contributeur
                                    Il doit bien avoir des messages. Normalement, si il n'y a pas de redirections, cron envoie un mail.
                                    0
                                    1. euh je pense que tu t'es tromper de poste non ?
                                      0
                                      1. euh je veux pas envoyer de mail j'aimerais juste que crontab ouvre firefox lol toutes les 30min sur un site donné et tous les jours a 5h00 du matin , pourquoi cron devrait me renvoyer un mail ?
                                        0
                                        • 1
                                        • 2
                                        • 3