Forum Linux.redhat Crontab et les tâches automatisées

Posté par  .
Étiquettes : aucune
0
19
août
2004
Salut,
Dans le fichier /etc/crontab
J'ai rajouté deux scripts shell pour s'exécuter un toute les 1 heure tous les jours et l'autre tous les jours à 00:10
Je suis pas un pro de Linux, je commence à peine de travailler avec ce OS du monde libre.
Sous unix je sais qu'il faux monter une fois modifier le fichier crontab en mémoire pour que le demon cron puisse exécuter les scripts.
Je me suis un peu documenté pour linux et suite à cette recherche
j'ai après la modification du fichier crontab lancer la commande suivante :
./crontab -u root /etc/crontab
pour monter les différents tâche à automatiser en mémoire.
J'ai même édité le fichier crontab en mémoire avec la commande :
./crontab -u root -e
Mes scripts y sont présents

J'ai la config suivante dans le fichier crontab :
# pour le premier script toutes les 1 heure et tous les jours
0,59 * * * * root /path1/script1.sh 2>&1 > /pathLog/fichierLog1.log
# pour le deuxième script tous les jours à minuit 10
10 00 * * * root path2/script2.sh 2>&1 > /pathLog/fichierLog2.log

J'ai bien testé mes scripts avant de les mettre dans /etc/crontab et ils fonctionnent bien.

Seulement, aucun script ne s'exécute aux dates prévus dans la crontab.
Quelqu'un a t-il une idée sur ce que je peux faire pour remédier au problème.

Merci d'avance pour votre contribution.
Dixz
  • # Titre manquant

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

    Pour editer un crontab, tu dois normalement passer par 'crontab -e'

    Pour une tache systême, tu peux utiliser /etc/cron.d, etc/crond.daily, ....


    Tu utilises quelle distribution Linux ?
    • [^] # Re: Titre manquant

      Posté par  . Évalué à 1.

      J'ai en effet éditer la crontab via ./crontab -u root -e
      mais pas pour la modifier mais pour voir si mes tâches étaient bien montées en mémoire.
      Sinon j'utilise Red Hat Linux release 7.2

      A propos, dois-je faire ./crontab -u root -e pour éditer et modifier le fichier /etc/crontab ?

      Merci pour ta réponse mais tu pense que le problème est sur la modif.
    • [^] # Re: Titre manquant

      Posté par  . Évalué à 1.

      Tu veux dire que je dois à tout éditer le fichier /etc/crontab via la commande ./crontab -u root -e
      C'est fait j'ai éditer et modifier.
      En effet apparaît le message plutôt rassurant suivant :
      ./crontab: installing new crontab
      Cependant j'ai toujours pas l'exécution de mes scripts
      
      • [^] # Re: Titre manquant

        Posté par  . Évalué à 1.

        A corriger comme suit:

        # pour le premier script toutes les 1 heure et tous les jours

        0,59 * * * * /path1/script1.sh 2>&1 > /pathLog/fichierLog1.log

        # pour le deuxième script tous les jours à minuit 10

        10 0 * * * /path2/script2.sh 2>&1 > /pathLog/fichierLog2.log


        Le mot "root" ne servait à rien, en fait cron devait lancer la commande root /path1/script1.sh ... et comme la commande root n'existe pas, ça ne fonctionnait pas.

        pour la première commande, le script sera lance à chaque heure pile et à chaque heure 59 minutes, ce qui n'est pas ce que le commentaire indique. Surplus à supprimer.

        man 5 crontab
        t'en dira plus.
        • [^] # Re: Titre manquant

          Posté par  . Évalué à 1.

          La crontab de root (c-à-d la crontab du système) prend un paramètre supplémentaire, qui est l'UID de l'utilisateur avec les permissions duquel la commande est exécutée. man 5 crontab, "EXAMPLE SYSTEM CRON FILE".
          • [^] # Re: Titre manquant

            Posté par  . Évalué à 1.

            root est le superutilisateur, pas le système, son crontab n'est pas différent d'un utilisateur normal, le crontab du système, c'est /etc/crontab

            Tiré de mon manuel fourni avec Fedora Core1:

            dans man cron:
            Cron recherche également /etc/crontab, qui a un format différent (voir crontab(5)).



            dans man 5 crontab:

            Le format d’une commande cron est très proche du standard V7, avec quelques options gardant une compatibilité ascendante. Chaque ligne dispose de 5 champs de date et heure, suivi d’un nom d’utilisateur s’il s’agit du fichier crontab central du système, suivi d’une commande. Les commandes sont exécutées par cron(8) lorsque les champs minute, heure, et mois de l’année correspondent à la date et quand au moins l’un des deux autres champs (jour du mois, jour de la semaine) correspond aussi (voir le paragraphe ‘‘Note’’ plus bas). cron(8) examine ses données une fois par minute. Les champs de date et heure sont :[...]


            EXEMPLE DE FICHIER CRONTAB
            # utiliser /bin/sh pour lancer les commandes, quoiqu’en dise /etc/passwd.
            SHELL=/bin/sh
            # Envoyer les résultats à Paul, sans tenir compte du propriétaire
            MAILTO=paul
            #
            # Chaque jour, 5 minutes après Minuit
            5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
            # Le premier de chaque mois à 14h15 - Résultat envoyé à Paul
            15 14 1 * * $HOME/bin/monthly
            # Les jours de la semaine à 22h, énerver Joe
            0 22 * * 1-5 mail -s "Il est 22h" joe%Joe,%%Où sont tes enfants ?%
            23 0-23/2 * * * echo "Tous les jours, à 23mn après 0h, 2h, 4h..."
            5 4 * * sun echo "Tous les dimanches à 4h 05"


            Voilà,voilà. je pense que "root" est dans le cas qui nous intéresse est inutile et faux.
  • # Tu as renseigné le PATH

    Posté par  . Évalué à 1.

    Si je me gourre pas, les scripts lancé par la crontab n'ont pas les variables d'environnement de renseignés.
    Ajoute au début de ton script :
    export PATH=/usr/bin:/usr/local/bin:/bin...
    et d'autres variables si tu en as besoin.
  • # Crontab, j'adore

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

    Les man de crontab sont géniaux :
    Sous Solaris, le sérieux est de rigueur :
    Example 1: Clean up core files every weekday morning at 3:15 am:
    15 3 * * 1-5 find $HOME -name core 2>/dev/null | xargs rm -f


    Sous Linux, (Vixie pas GNU), on embête ses petits copains :
    # run at 10 pm on weekdays, annoy Joe
    0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
  • # Typo ?

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

    > J'ai rajouté deux scripts shell pour s'exécuter un toute les 1 heure [...]
    >
    > # pour le premier script toutes les 1 heure et tous les jours
    > 0,59 * * * * root /path1/script1.sh 2>&1 > /pathLog/fichierLog1.log


    Moi, si je devais exécuter un script toutes les heures, tous les jours (24H/24 & 7J/7 donc) j'utiliserai:
    0 * * * * root /path1/script1.sh 2>&1 > /pathLog/fichierLog1.log

    Suis-je le seul ?

Suivre le flux des commentaires

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