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. J'ai eu le même problème

    Il faut rediriger ta sortie standard dans le cron

    /tmp/script.sh 1>/dev/null 2>&1

    sinon le cronjob plante ne sachant pas où écrire tes output.
    0
    1. c'est avec le sourir que je vais nous libérer, effectivement je viens de voir sur un site que mandrake ne supporte pas l'ouverture d'applications graphique avec crontab donc j'utilise KAlarm .... c'est tout aussi éfficace et ça se fait en 2 cliques.

      Merci quand même à tout le monde pour vos réflexions intenssives et vos réponses .

      Bonne continuation.
      0
      1. Modérateur
        regare ici pour l'installation et démarrage de firefox logiciel libre installation firefox 2 0 java flash#3 installation de firefox

        tu peux prendre la version 2.0.0.4
        0
        1. pas moyen d'installer firefox 2 , j'ai télécharger le fichier tgz et décomprésser mais aucun fichier dedans n'ouvre mozilla lors de son execution.

          C'est pas grave j'ai tenter en utilisant konqueror ça ne marche pas non plus.

          et le log me renvoi ça :

          konqueror: cannot connect to X server

          c'est ici que je dois mettre un display quelque part ???
          0
          1. Modérateur
            Le mieux encore c'est d'installer la dernière version de Firefox quelque part dans ton "/home", puis de faire un lien symbolique dans un répertoire "/bin" de ton "$PATH".
            0
            1. [root@localhost user1]# cat /etc/release
              Mandrakelinux release 10.2 (Limited Edition 2005) for i586
              [root@localhost user1]# mozilla-firefox -v
              Mozilla Firefox 1.0.2, Copyright (c) 2004 mozilla.org

              j'ai installer les nouveaux paquetages de mozilla avec un urpmi mozilla-firefox et il a télécharger :

              [root@localhost user1]# urpmi mozilla
              Certains paquetages demandés ne peuvent pas être installés :
              mozilla-1.7.6-3mdk.i586 (car mailcap est non satisfait)
              Continuer ? (O/n) O
              [root@localhost user1]# urpmi mozilla-firefox

              http://distrib-coffee.ipsl.jussieu.fr/...
              installation de mozilla-firefox-1.0.2-10.1.102mdk.i586.rpm depuis /var/cache/urpmi/rpms
              Préparation ... #############################################
              1/1: mozilla-firefox #############################################
              [root@localhost user1]#

              et aussi avec ça :

              [root@localhost user1]# urpmi mozilla-firefox-devel
              Pour satisfaire les dépendances, les 5 paquetages suivants vont être installés (25 Mo):
              libnspr4-1.0.2-10.1.102mdk.i586
              libnspr4-devel-1.0.2-10.1.102mdk.i586
              libnss3-1.0.2-10.1.102mdk.i586
              libnss3-devel-1.0.2-10.1.102mdk.i586
              mozilla-firefox-devel-1.0.2-10.1.102mdk.i586
              Est-ce correct ? (O/n) O

              http://distrib-coffee.ipsl.jussieu.fr/...
              http://distrib-coffee.ipsl.jussieu.fr/...
              http://distrib-coffee.ipsl.jussieu.fr/...
              http://distrib-coffee.ipsl.jussieu.fr/...
              http://distrib-coffee.ipsl.jussieu.fr/...
              installation de libnspr4-1.0.2-10.1.102mdk.i586.rpm mozilla-firefox-devel-1.0.2-10.1.102mdk.i586.rpm libnss3-devel-1.0.2-10.1.102mdk.i586.rpm libnspr4-devel-1.0.2-10.1.102mdk.i586.rpm libnss3-1.0.2-10.1.102mdk.i586.rpm depuis /var/cache/urpmi/rpms
              Préparation ... #############################################
              1/5: libnspr4 #############################################
              2/5: libnss3 #############################################
              3/5: libnspr4-devel #############################################
              4/5: libnss3-devel #############################################
              5/5: mozilla-firefox-devel ######################

              bizzar , que ce soit une vieille version de mozilla-firefox alors je pensais en avoir installer une nouvelle avec tout ces paquetages ...
              0
              1. Modérateur
                Bon alors, quelle version d'OS et de mozilla-firefox ?
                cat /etc/release
                mozilla-firefox -v
                ;-))
                0
                1. sa donne :

                  [root@localhost user1]# whereis mozilla-firefox
                  mozilla-firefox: /usr/bin/mozilla-firefox /usr/share/man/man1/mozilla-firefox.1.bz2
                  [root@localhost user1]#

                  Mais pour revenir aux choses tu penses que c'est mozilla le probleme ? car je n'ai pas fais de lien symbolique , j'ai installer l'os ya pas longtemps et pour chez moi je l'ai installer pour l'occasion.
                  0
                  1. si je fais whereis mozilla-firefox je trouve si je fais whereis firefox

                    [root@localhost user1]# whereis firefox
                    firefox:

                    Voila =)
                    0
                    1. Modérateur
                      si je fais whereis mozilla-firefox je trouve
                      Et ça donne quoi ?

                      Parce que normalement l'exécutable pour lancer "firefox", c'est "firefox" et non pas "mozilla-firefox" (à moins d'une version très ancienne ou d'un lien symbolique...)
                      0
                  2. Modérateur
                    Salut,

                    Déjà il serait bien il me semble de savoir où se trouve "firefox" sur ton système, non ?
                    Que te renvoie la commande :
                    whereis firefox
                    ?;-))
                    0
                    1. alors je fais quoi ,??? j'ai tenter sur une mandriva 2005 au boulot et sur une mandriva 2006 chez moi ....

                      d'ailleur si je tape /usr/bin/firefox dans un terminal cela ne me l'ouvre pas...

                      est ce que ce serait possible que la version que j'ai de mozila soit trop vieille pour supporté ce que je lui demande ?
                      0
                      1. Modérateur
                        Salut,

                        ce n'est pas un problème de langage

                        d'ailleurs je ne comprends pas pourquoi tu as des problèmes
                        dans mon message crontab execute la moitie d un script shell#7
                        je t'ai dit que ça marche chez moi, et je ne crois qu'il y a des raisons que chez toi ne marche pas
                        0
                        1. je viens d'essayer avec un script en perl :

                          #!/usr/bin/perl

                          system("killall -9 mozilla-bin");
                          sleep(1);
                          system("/usr/bin/mozilla-firefox www.google.fr");

                          Pour le cron j'ai juste changer le script.sh en script.pl

                          cela ne fonctionne toujours pas ...

                          Y aurait il un autre language qui le fasse aussi simplement ?
                          0
                          1. Bonjour,

                            si je prend ce que tu ma dit le /tmp/log renvoie ça :

                            flock-bin: no process killed
                            /usr/lib/mozilla-firefox-1.0.2/mozilla-firefox-bin: error while loading shared libraries: libmozjs.so: cannot open shared object file: No such file or directory
                            0
                            1. salut , pour la reponse :
                              root@localhost julen]# xhost +`hostname`
                              localhost being added to access control list

                              c'est bon, mais je ne vois pas l'interet, ni pour ton probleme,
                              quand on lance xhost +adresse ip
                              par ex, xhost +192.168.1.2
                              tu autorises une personne (qui a une ip de 192.168.1.2) à lancer une application X (graphique) sur ton
                              bureau ,cad sur ton DISPLAY

                              pour le crontab, as tu essayé:

                              DISPLAY=:0.0
                              */2 * * * * /usr/bin/firefox-bin google.fr
                              0
                              1. bonjour, dsl je suis débutant mais tu veux dire quoi par :

                                et en exécutant:
                                xhost +`hostname`
                                ??si c'est de le taper dans le terminal , voici ce que j'obtient :

                                root@localhost julen]# xhost +`hostname`
                                localhost being added to access control list
                                0
                                1. Contributeur
                                  et en exécutant:
                                  xhost +`hostname`
                                  pour autoriser l'accès au display X ?
                                  Tout est fait comme root ?
                                  Si oui, y a t-il un fichier /.Xauthority ?
                                  0
                                  1. nouvelle érreur si j'ai ouvert mozzila et kwrite le script les ferme comme prévu et dans le log c'est marqué sa :

                                    (mozilla-firefox-bin:26368): Gtk-WARNING **: cannot open display:

                                    Comme je n'y comprend rien je m'en remet a vous =)

                                    Merci

                                    PS : j'ai tenter de lancer konqueror a la place de mozilla et cela ne fonctionne pas non plus...
                                    De même que :

                                    #!/bin/sh

                                    mozilla-firefox www.google.fr

                                    ne fonctionne pas ... je commence a croire que je suis maudit c'est pourtant simple mais je n'y arrive pas...
                                    0
                                    1. Salut,

                                      Bon, si on a un message d'erreur de firefox, c'est déjà un premier grand pas ;)

                                      Donc, essaie ça, maintenant... c'est une petite "compil" de tout ce qui a été dit avant...

                                      dans /etc/crontab :
                                      */2 *   * * *   user1    /home/user1/Desktop/script.sh >/tmp/log 2>&1


                                      dans /home/user1/Desktop/script.sh :
                                      #!/bin/bash
                                      killall -9 flock-bin
                                      /usr/lib/mozilla-firefox-1.0.2/mozilla-firefox-bin --display=:0.0 'www.google.fr'&

                                      Et ensuite, regarde d'éventuels messages d'erreur dans :
                                      - /tmp/log
                                      - /var/log/syslog

                                      Hope it helps ;)
                                      0
                                  2. merci pour vos réponses, j'ai tester ce que tu m'a dit MrCLAY
                                    à savoir mon script.sh :

                                    #!/bin/sh

                                    killall -9 /usr/lib/mozilla-firefox-1.0.2/mozilla-firefox-bin
                                    killall -9 kwrite
                                    mozilla-firefox google.fr

                                    J'ai rendu ce script éxecutable donc si je clique dessus ( comme windows ) il ferme mozilla et kwrite et réouvre mozilla sur google mais le crontab ne fonctionne pas ...

                                    je veux juste tester toutes les minutes executer le script aprés je changerais le temps si cela fonctionne .
                                    Je fais ces tests sur une autres machines nommée user1 ( plus agatelocal)

                                    donc dans le crontab -e j'ai ceci :

                                    */1 * * * * user1 /home/user1/Desktop/script.sh 1>/tmp/log1 2>&1

                                    Les modifications sont prises en compte car :

                                    [root@sandrine-28t8co etc]# crontab -e
                                    crontab: installing new crontab
                                    [root@sandrine-28t8co etc]#

                                    Je vais voir ce qui se trouve dans le log1 et voici ce qu'il me dit :

                                    /bin/sh: user1: command not found

                                    J'ai tester en enlevant le user1 :
                                    */1 * * * * /home/user1/Desktop/script.sh 1>/tmp/log1 2>&1

                                    Alors mozilla est fermé, kwrite est fermé mais mozilla ne s'ouvre pas ...

                                    Que dois je faire ?

                                    Merci d'avance.
                                    0
                                    1. Tu disais...
                                      "
                                      */1 * * * * user1 /home/user1/Desktop/script.sh 1>/tmp/log1 2>&1
                                      Les modifications sont prises en compte car :

                                      [root@sandrine-28t8co etc]# crontab -e
                                      crontab: installing new crontab
                                      [root@sandrine-28t8co etc]#

                                      Je vais voir ce qui se trouve dans le log1 et voici ce qu'il me dit :

                                      /bin/sh: user1: command not found

                                      J'ai tester en enlevant le user1 :
                                      */1 * * * * /home/user1/Desktop/script.sh 1>/tmp/log1 2>&1 
                                      "

                                      Rectification pour le code que je t'ai donné : il n'y avait (en tout que 4 "étoiles") :
                                      */1 * * * agatelocal /home/agatelocal/Desktop/script.sh 1>/tmp/log1 2>&1

                                      (tu en as mis 5)

                                      En fait, je remplace une des "*" par "agatelocal", ce qui signifie que c'est cet utilisateur là qui lance l'action.

                                      Sinon, à la place de ". .profile", essaie de mettre "export DISPLAY=':0.0'" ?
                                      ça donnerait :
                                      #!/bin/sh
                                      
                                      export DISPLAY=':0.0'
                                      killall -9 /usr/lib/mozilla-firefox-1.0.2/mozilla-firefox-bin
                                      killall -9 thunderbird
                                      0
                                  3. salut, meme pas la peine de charger tout le profile : ça change legerement celon
                                    les distributions !
                                    tu peux mettre au debut
                                    DISPLAY=:0.0
                                    comme on avait dit au debut avec les variables d'environnement
                                    0
                                    • 1
                                    • 2
                                    • 3