Partage
  • Partager sur Facebook
  • Partager sur Twitter

CRONTAB ne marche pas

Sujet résolu
    18 avril 2015 à 22:14:39

    Bonjour à tous ! Enfin bonsoir ;)

    J'ai un soucis avec le crontab. J'ai ajouté une tâche qui doit éxecuter un script. Le script contient simplement ceci :

    echo "ok" >> test.txt

    et le cron j'ai essayé toutes les variantes :

    # m h  dom mon dow   command
    * * * * * sh /var/tmp/malrod/check.sh
    

    mais aussi :

    # m h  dom mon dow   command
    * * * * * /bin/sh /var/tmp/malrod/check.sh
    

    etc.. et j'ajjoute que j'ai bien chmod +x mon fichier ;)

    Une idée ?




    -
    Edité par Malrod 18 avril 2015 à 22:25:19

    • Partager sur Facebook
    • Partager sur Twitter
      18 avril 2015 à 22:52:05

      salut,

      si ton script est exécutable, alors (/bin/)sh est inutile.

      il faudrait quand même lui mettre un shebang sur la première ligne.

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        18 avril 2015 à 23:11:34

        Effectivement je n'avais pas mis le #!/bin/bash mais même avec, ça ne fonctionne pas :/
        • Partager sur Facebook
        • Partager sur Twitter
          18 avril 2015 à 23:41:37

          ah, oui !

          cron ne sait pas où est localisé le fichier test.txt; il faut en indiquer le chemin absolu.

          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

            18 avril 2015 à 23:53:45

            Non toujours pas. J'ai indique le chemin complet dans le fichier mais pas de résultat.
            • Partager sur Facebook
            • Partager sur Twitter
              19 avril 2015 à 0:17:08

              comment édites-tu ta crontab ?

              on récapitule :

              tu édites le script, en indiquant les chemins absolus (on peut en voir la nouvelle version ?)

              tu le rends exécutable, et tu le testes : il fonctionne dans la console

              tu édites ta crontab, dans laquelle le script en censé s'exécuter toutes les minutes.

              ça devrait fonctionner.

              tu as regardé ce que dit /var/log/syslog ?

              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                19 avril 2015 à 0:36:02

                Alors je résume.

                Voici le script check.sh que je souhaite lancer :

                #!/bin/bash
                echo "OK" >> /vat/tmp/$HOSTNAME/test.txt
                

                Le crontab ressemble à ça :

                # m h  dom mon dow   command
                * * * * * /var/tmp/malrod/check.sh
                

                Et j'insère le cron par un script cron.sh :

                EDITOR=nano
                export EDITOR
                
                crontab -l > mycron
                
                echo "* * * * * /var/tmp/malrod/check.sh" >> mycron
                
                crontab mycron
                rm mycron

                Le var/log/syslog dit la même chose chaque minute :

                Apr 19 00:28:01 arnaud CRON[12681]: (root) CMD (/var/tmp/malrod/check.sh)
                Apr 19 00:28:01 arnaud CRON[12680]: (CRON) info (No MTA installed, discarding output)
                





                -
                Edité par Malrod 19 avril 2015 à 0:37:43

                • Partager sur Facebook
                • Partager sur Twitter
                  19 avril 2015 à 0:45:54

                  on pourrait simplifier cron.sh
                  { crontab -l ; echo "* * * * * /var/tmp/malrod/check.sh";} | crontab -

                  mais ça ne change rien, fondamentalement, ça permet juste de s'affranchir du fichier temporaire mycron.

                  bien sûr, le répertoire /var/tmp/$HOSTNAME/ existe ?

                  t'as regardé dans /var/log/syslog les exécutions de cron ?

                  j'ai commencé à répondre avant que tu édites ton message.

                  comment se fait-il que tu n'aies pas de MTA ? quelle distribution utilises-tu ?

                  puisqu'il n'y a pas de service de mail, il faut rediriger toutes les erreurs vers des fichiers log

                  insère ceci au début des scripts:

                  exec 2>/tmp/${0##*/}.log
                  set -x

                  et modifie la ligne cron ainsi

                  * * * * * /var/tmp/malrod/check.sh >/tmp/cron_malrod.log 2>&1

                  ça devrait nous en dire plus.


                  -
                  Edité par dantonq 19 avril 2015 à 0:52:22

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                    19 avril 2015 à 1:00:37

                    J'utilise Ubuntu 14.04. Je fais ça et je te dis ce que ça donne !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 avril 2015 à 1:28:27

                      Ah super ! Le fichier de log du check.sh m'a donné la solution ! Regarde l'emplacement de mon fichier test.txt... C'est /var/tmp pas /vat/tmp -_-
                      Cela dit je vais tout de même utiliser ta méthode pour le cron, ça m'évitera de passer par un fichier temporaire. Je vais faire le test pour le programme que je veux faire et je reviens si jamais je tombe sur un pépin. Mais ca devrait aller.

                      Merci de ton aide :) 

                      • Partager sur Facebook
                      • Partager sur Twitter

                      CRONTAB ne marche pas

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown