Forum Linux.débutant Les tâches cron ne se lancent pas

Posté par  . Licence CC By‑SA.
Étiquettes :
0
10
fév.
2013

Bonjour tous j'ai voulu programmer une tâche cron pour cela j'ai crée le fichier dans /home/jo/Downloads/test
en tant que root j'ai taper "crontab -e"
Voici le contenu :

SHELL=/bin/bash
MAILTO=root
PATH=$PATH
HOME=/
24 03 * * * root rm -f /home/jo/Downloads/test

J'ai sauvegarder avec :wq et pourtant cron ne se lance pas (j'ai voulu le lancer à 03:24 est le fichier test est toujours présent)
Voici mes logs de /var/log/cron

Feb 10 03:14:28 localhost crontab[1949]: (root) BEGIN EDIT (root)
Feb 10 03:15:18 localhost crontab[1949]: (root) REPLACE (root)
Feb 10 03:15:18 localhost crontab[1949]: (root) END EDIT (root)
Feb 10 03:16:04 localhost crontab[1954]: (root) BEGIN EDIT (root)
Feb 10 03:17:53 localhost crontab[1954]: (root) END EDIT (root)
Feb 10 03:17:56 localhost crontab[1970]: (root) BEGIN EDIT (root)
Feb 10 03:18:05 localhost crontab[1970]: (root) END EDIT (root)
Feb 10 03:18:09 localhost crontab[1974]: (root) BEGIN EDIT (root)
Feb 10 03:18:16 localhost crontab[1974]: (root) REPLACE (root)
Feb 10 03:18:16 localhost crontab[1974]: (root) END EDIT (root)
Feb 10 03:18:18 localhost crontab[1978]: (root) BEGIN EDIT (root)
Feb 10 03:19:01 localhost crond[653]: (root) RELOAD (/var/spool/cron/root)
Feb 10 03:19:16 localhost crontab[1978]: (root) REPLACE (root)
Feb 10 03:19:16 localhost crontab[1978]: (root) END EDIT (root)
Feb 10 03:19:29 localhost crontab[2024]: (root) BEGIN EDIT (root)
Feb 10 03:19:32 localhost crontab[2024]: (root) REPLACE (root)
Feb 10 03:19:32 localhost crontab[2024]: (root) END EDIT (root)
Feb 10 03:20:01 localhost crond[653]: (root) RELOAD (/var/spool/cron/root)
Feb 10 03:20:17 localhost crontab[2040]: (root) BEGIN EDIT (root)
Feb 10 03:21:07 localhost crontab[2040]: (root) REPLACE (root)
Feb 10 03:21:07 localhost crontab[2040]: (root) END EDIT (root)
Feb 10 03:22:01 localhost crond[653]: (root) RELOAD (/var/spool/cron/root)
Feb 10 03:22:01 localhost CROND[2052]: (root) CMD (root rm -f /home/jo/Downloads/test)
Feb 10 03:22:13 localhost crontab[2061]: (root) BEGIN EDIT (root)
Feb 10 03:22:34 localhost crontab[2061]: (root) END EDIT (root)
Feb 10 03:22:37 localhost crontab[2065]: (root) LIST (root)
Feb 10 03:23:46 localhost crontab[2124]: (root) BEGIN EDIT (root)
Feb 10 03:23:55 localhost crontab[2124]: (root) REPLACE (root)
Feb 10 03:23:55 localhost crontab[2124]: (root) END EDIT (root)
Feb 10 03:24:01 localhost crond[653]: (root) RELOAD (/var/spool/cron/root)
Feb 10 03:24:02 localhost CROND[2129]: (root) CMD (root rm -f /home/jo/Downloads/test)
Feb 10 03:24:10 localhost crontab[2138]: (root) BEGIN EDIT (root)
Feb 10 03:24:18 localhost crontab[2138]: (root) END EDIT (root)
Feb 10 03:25:52 localhost crontab[2201]: (root) BEGIN EDIT (root)
Feb 10 03:26:17 localhost crontab[2201]: (root) END EDIT (root)
Feb 10 03:32:21 localhost crontab[2308]: (root) BEGIN EDIT (root)
Feb 10 03:33:27 localhost crontab[2308]: (root) END EDIT (root)

Qui peut m'aider ?
PS : je suis sur Fedora 18 XFCE 32 bit

  • # crontab utilisateur

    Posté par  . Évalué à 6.

    Il y a une différence entre les crontabs systèmes (/etc/crontab et /etc/cron.d/*) et les crontabs utilisateurs (dans /var/spool/cron/crontabs et éditées par crontab -e): on ne spécifie pas de compte utilisateur dans une crontab utilisateur (c'est inutile):

     24 03 * * * rm -f /home/jo/Downloads/test
    
    
  • # Environnement

    Posté par  . Évalué à 4.

    Salut,

    PATH=$PATH

    Euh… ça ça revient à écrire :

    PATH=
    
    

    Une crontab n'a pas d'environnement, donc si tu ne lui donnes pas un PATH complet (ou un fichier à sourcer), tes commandes ne seront pas reconnues (rm dans ton cas).

    • [^] # Re: Environnement

      Posté par  . Évalué à 3.

      La ligne PATH=$PATH est inutile mais ne casse rien.
      Une crontab a un environnement minimal, PATH y est défini en:

      PATH=/usr/bin:/bin
      
      

      voir man 5 crontab pour les détails.

      • [^] # Re: Environnement

        Posté par  . Évalué à 1.

        Effectivement, j'avais zapé ce détail. Merci.

        Par contre il est écrit aussi :

        La chaîne valeur ne permet pas les substitutions de variable d'environ‐
               nement ou le remplacement de variables, ainsi une ligne comme
        
                   PATH = $HOME/bin:$PATH
        
               ne fonctionnera pas comme attendu. Tout comme ceci ne fonctionnera pas
        
                   A=1
                   B=2
                   C=$A $B
        
               **Il n'y aura pas de substitution pour les variables définies dans la dernière valeur**.
        
        

        Alors j'ai testé en initialisant la variable PATH=$PATH en début de crontab et en faisant un simple cp /home/moi/fichier1 /home/moi/fichier2 et résultat… rien.

        Par contre en enlevant PATH=$PATH la copie s'est bien effectuée.

        Conclusion : Il doit supprimer la déclaration de sa variable ou lui donner les chemins en dur ou encore sourcer un fichier d'environnement.

        • [^] # Re: Environnement

          Posté par  . Évalué à 2.

          Merci d'avoir vérifié.
          Il est vrai que j'ai plutôt l'habitude de définir les variables d'environnement à l'intérieur du script lancé par cron plutôt que dans la crontab. Ça permet de s'assurer que l'environnement est identique que la commande soit lancée par cron ou manuellement (pratique pour les tests).

          Finalement, la crontab contient deux erreurs:

          • PATH erroné
          • 'root' en trop dans la ligne définissant la commande.
  • # Merci pour votre aide

    Posté par  . Évalué à 1. Dernière modification le 10 février 2013 à 21:49.

    Merci pour votre aide je vous ai écouter tous les eux j'ai mis à jour la variable PATH j'ai mis PATH=/usr/bin:/bin et j'ai enlevé root ce qui donne 45 21 * * * rm -f /home/jo/Downloads/test et la géniale le fichier est supprimé donc le cron marche bien mais je ne savais pas qu'il y avait deux sortes de cron preuve que je ne lit pas encore assez attentivement !

Suivre le flux des commentaires

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