Bonjour tout le monde.

J’ai besoin qu’un script s’exécute chaque jour à une heure précise. Si je mets mon fichier cron dans cron.d, ça marche. Si je le déplace dans cron.hourly ou cron.daily, ça marche pô !

Quelqu’un pourrait-il m’expliquer rapidement la différence qu’il y a entre cron.d et les autres (cron.hourly, cron.daily …) ?

  • Nicosss et crisis23 a répondu à ça.
  • kinesra

    Comme je le pensais, un simple copier-coller ne fonctionnera pas pour cron.daily, car par défaut, sur Fedora, les scripts sont exécutés à une certaine heure pour daily, weekly etc etc

    Supprime la ligne de temps dans ton script pour cron.daily

    root php -q /var/www/html/BackupDB.php

    donne les permissions d’exécution à ton script

    sudo chmod +x /etc/cron.daily/rapport

    Ca devrait fonctionner.

    Par contre, si tu veux maintenir ton heure à 03 h 00, il te faudra créer un autre script, et utiliser cron.d & cron.daily

    Crée un fichier nommé rapport.wrapper dans :cron.daily

    #!/bin/bash

    # Exécuter le script PHP ‘rapport’

    php -q /var/www/html/BackupDB.php

    du coup tu ajoutes dans : cron.d

    00 03 * * * /etc/cron.daily/rapport.wrapper

    tu donnes les droits d’exécution à ton fichier :

    sudo chmod +x /etc/cron.daily/rapport.wrapper

    Ca devrait aussi fonctionner.

    A toi de voir lequel tu veux exécuter.

    ps : ***.wrapper c’est pour rappeler que ce script dépend d’une autre commande.

    Par contre la doc sur Fedora, c’est très conseillé pour se dépatouillé un peu.👍

    Cron dans RedHat

    Nicosss
    Tu es gentil, et même très… un man crontab explique tout.

    Merci à vous pour votre condescendance.

    Mais toutes ces explications sont un peu floues pour mes deux neurones et demi.

    Pouvez-vous me dire comment faire exécuter, en tant qu’administrateur, ma tâche cron en la plaçant dans cron.daily ?

    00 03 * * * php -q /etc/www/html/monscript.php

    Merci.

      kinesra Merci à vous pour votre condescendance.

      J’espère que c’est un mauvais emploi du terme ? Parce que si t’envoyer vers une Documentation du site qui a été rédigée pour aider les personnes est un signe de mépris j’ai un peu de mal.

        Nicosss Ce n’est pas vraiment la réponse que j’attendais. Mais si ma question vous parait à ce point triviale, je vais me débrouiller autrement.

        Merci.

        Je suis pas expert en cron, mais le répertoire daily exécute le script a 04:02. Tout comme hourly qui exécute a chaque heure +1min… est ce nécessaire de spécifier dans ton script une exécution a 03:00 ?

        Autant que je me souvienne (la réserve est importante) on n’a pas à toucher à ces fichiers.

        C’est l’exécutable crontab qui s’en occupe. <- fais gaffe, Machin, la condescendance te guette !

        kinesra

        Salut @kinesra

        Attention “cron.d” & “cron.daily” ne se configure pas de la même manière.

        cron.daily n’a pas besoin de date, il s’exécute automatiquement à 00h00.

        Le copier/coller, surtout d’un script doit respecter les règles d’un “service” ou il va s’exécuter tel que cron.

        Peux-tu nous montrer :

        • le nom de ton script
        • le contenu du script

        cf : doc pour avoir les dernières infos sur ce sujet

          crisis23

          Le script qui fonctionne très bien aujourd’hui se nomme ‘rapport’. Il est placé dans /etc/cron.d

          Voici ce qu’il contient :

          00 03 * * * root php -q /var/www/html/BackupDB.php

          Le script php en question sauvegarde chaque jour ma DB à 3:00 et m’envoie un rapport par mail.

          Je voudrais placer ‘rapport’ dans /etc/cron.daily pour des raisons ‘esthétiques’ et surtout pour comprendre comment fonctionne les tâches cron mais un simple copier/coller ne marche pas (la tâche n’est pas executée).

          Le lien d’abord fourni par Nicoss est sans doute très bien mais trop générique pour moi. Quant à ‘man crontab’, cette commande est très détaillée sur la syntaxe mais pas trop sur le fonctionnement.

          Merci Crysis23 de te pencher avec bienveillance sur mon cas 👍

            kinesra

            Comme je le pensais, un simple copier-coller ne fonctionnera pas pour cron.daily, car par défaut, sur Fedora, les scripts sont exécutés à une certaine heure pour daily, weekly etc etc

            Supprime la ligne de temps dans ton script pour cron.daily

            root php -q /var/www/html/BackupDB.php

            donne les permissions d’exécution à ton script

            sudo chmod +x /etc/cron.daily/rapport

            Ca devrait fonctionner.

            Par contre, si tu veux maintenir ton heure à 03 h 00, il te faudra créer un autre script, et utiliser cron.d & cron.daily

            Crée un fichier nommé rapport.wrapper dans :cron.daily

            #!/bin/bash

            # Exécuter le script PHP ‘rapport’

            php -q /var/www/html/BackupDB.php

            du coup tu ajoutes dans : cron.d

            00 03 * * * /etc/cron.daily/rapport.wrapper

            tu donnes les droits d’exécution à ton fichier :

            sudo chmod +x /etc/cron.daily/rapport.wrapper

            Ca devrait aussi fonctionner.

            A toi de voir lequel tu veux exécuter.

            ps : ***.wrapper c’est pour rappeler que ce script dépend d’une autre commande.

            Par contre la doc sur Fedora, c’est très conseillé pour se dépatouillé un peu.👍

            Cron dans RedHat

              crisis23

              Enfin une réponse cohérente !

              A l’aune de tes explications très claires, je vais pouvoir m’amuser un peu avec les taches planifiées.

              Crisis23, je t’aime 😄😄

              @kinesra
              Merci, c’est sympa, mais le principal c’est que ça fonctionne
              J’utilise cron pour mon dns resolver unbound depuis des années, sur une autre distribution, mais je m’inspire toujours de la Doc Redhat, il me semble que c’est eux qui sont en charge de son évolution, je peux me tromper