Forum Programmation.shell dans une crontab, rediriger la sortie vers un fichier contenant la date

Posté par  (site web personnel) .
Étiquettes : aucune
0
8
mar.
2007
Bonjour

Ca doit être très simple, mais je n'arrive pas à faire ce qui suit:
j'ai un job dans cron, je veux qu'il me donne un log contenant la date.

Si je fais de manière interactive
/home/user/test >/tmp/log_$(date +'%d%m%y')
Ca me crée un fichier log_080307 (aujourd'hui uniquement !)

Par contre, la même commande dans la crontab ne crée pas de fichier d'output.

C'est possible ?

J'ai contourné en ayant dans la crontab un script lance_xxx, et ça fonctionne.
  • # A tenter

    Posté par  (site web personnel) . Évalué à 1.

    DATE=`date +'%d%m%y'`
    LOGFILE="log_$DATE"
    /home/user/test > $LOGFILE
    • [^] # Re: A tenter

      Posté par  (site web personnel) . Évalué à 2.

      Je suis pas sur de comprendre, comment je mets ces 3 lignes dans la crontab, sur une ligne ?

      ウィズコロナ

      • [^] # Re: A tenter

        Posté par  . Évalué à 1.

        Non, il faut que tu crees un script (par example /home/user/test) dans lequel tu mets :

        #!/bin/sh
        DATE=`date +'%d%m%y'`
        LOGFILE="log_$DATE"
        ma_commande > $LOGFILE

        ensuite tu rend le script executable :
        chmod +x /home/user/test

        et tu le rajoute dans la crontab
        • [^] # Re: A tenter

          Posté par  (site web personnel) . Évalué à 2.

          c'est équivalent à mon contournement actuel, avoir dans la crontab juste un
          lance_xxx, qui fait
          xxx >/tmp/log_$(date +'%d%m%y')

          ウィズコロナ

          • [^] # Ca, ça marche

            Posté par  (site web personnel) . Évalué à 2.

            Bon j'ai trouvé, mettre une ligne du genre
            * * * * * ls > /tmp/log_$(date +\%d)

            :-)

            Rien ne vaut la saine lecture des docs
            man 5 crontab

            ウィズコロナ

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.