Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cron n’execute pas une commande script bash

Anonyme
    6 mars 2018 à 19:28:25

    Bonjour à tous,

    J’ai le script bash suivant :

    #!/bin/bash

    ls -1t /my/folder | tail -n +11 | xargs rm -f

    Celui-ci check si le dossier en question a plus de 10 éléments. Si oui, il supprime les n-10 éléments les plus anciens.

    Lorsque je lance ce script manuellement, il fais bien le job, mais lorsque je planifie un cron qui lance le .sh (en root), les fichiers ne sont pas supprimés :(

    Voici mon cron :

    0 2 * * * /home/pi/Documents/my_script.sh

    Par contre, j’ai essayé d’autres commandes tels que dd, gzip et autres et ça passe. J’ai l’impression que c’est le rm -f qu’il n’aime pas mais je n’en sais pas plus.

    Pouvez-vous me venir en aide SVP. Merci d’avance !

    Cordialement,

    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2018 à 12:04:03

      Salut,

      quand tu le lance "à la main", tu tapes:

       /home/pi/Documents/my_script.sh

      ou

      sh  /home/pi/Documents/my_script.sh



      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        7 mars 2018 à 17:00:47

        Je le lance comme ça

         /home/pi/Documents/my_script.sh
        • Partager sur Facebook
        • Partager sur Twitter
          7 mars 2018 à 17:51:04

          Bonjour essayes comme ça

          0 2 * * * root /home/pi/Documents/my_script.sh 2>>/var/log/logMyScript.log



          et regardes si le fichier /var/log/logMyScript.log est créé et ce qu'il contient.

          -
          Edité par bxdfr 7 mars 2018 à 17:51:50

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            7 mars 2018 à 18:17:15

            J'ai effectué les modifs.

            Le fichier de log contient :

            bin/sh: 1: root: not found



            -
            Edité par Anonyme 7 mars 2018 à 18:17:34

            • Partager sur Facebook
            • Partager sur Twitter
              7 mars 2018 à 20:44:41

              salut,

              si tu implémentes une tâche cron avec crontab, il ne faut pas mettre le nom de l'utilisateur.
              recommence sans.

              • Partager sur Facebook
              • Partager sur Twitter

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

              Anonyme
                7 mars 2018 à 22:47:57

                Bonsoir,

                Si je ne mets pas le nom de l'utilisateur, je reviens a mon problème initial, décrit en premier lieu.

                • Partager sur Facebook
                • Partager sur Twitter
                  8 mars 2018 à 10:59:45

                  et le log ne contient rien ?

                  adapte la crontab ainsi :

                  0 2 * * * /home/pi/Documents/my_script.sh >/tmp/logMyScript.log 2>&1

                  et ton script :
                  #!/bin/bash -x
                  
                  ls -1t /my/folder | tail -n +11 | xargs rm -f
                  • Partager sur Facebook
                  • Partager sur Twitter

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

                  Anonyme
                    10 mars 2018 à 10:58:04

                    J'ai dans le logMyScript.log le contenu suivant (les fichiers ne sont toujours pas supprimés):

                    + ls -1t /my/folder

                    + tail -n +11

                    + xargs rm -f

                    -
                    Edité par Anonyme 10 mars 2018 à 10:58:20

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 mars 2018 à 11:28:28

                      c'est bizarre que le script fonctionne en ligne de commandes.
                      quand tu l'exécutes, tu le fais depuis le répertoire listé ?
                      car tail ne reçoit que les noms des fichiers, sans chemin; or rm ne peut pas les trouver sans chemin !
                      • Partager sur Facebook
                      • Partager sur Twitter

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

                      Anonyme
                        10 mars 2018 à 11:52:09

                        Effectivement, je ne le faisais pas depuis le répertoire listé et ton explication est tout à fait logique. En ajoutant un "cd" avant le reste des opérations, mon problème a été résolu. Merci beaucoup dantonq! :)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Cron n’execute pas une commande script bash

                        × 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