Forum Linux.redhat Cron, j'en ai marre

Posté par  .
Étiquettes : aucune
0
3
jan.
2005
Bonjour a tous et bonne année

alors voila, j'ai encore ce probleme de cron

1 * * * * su - root -c ? /root/backup.php

que dois je mettre a la place du ?
parce que meme avec les indications deja données auparavant je ne sait toujours pas comment ecrire ce qu'il manque

merci d'avance de votre aide
  • # man crontab

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

    en root.

    Si tu veux que root fasse quelque chose en cron, alors rentre ça dans son crontab à lui.
    Tu peux aussi utiliser sudo (pas su) dans ton crontab utilisateur.
  • # Tout simplement!

    Posté par  . Évalué à 1.

    1 * * * * /root/backup.php ca doit suffire !

    Voici un des crontab root que j'utilise (debian sid)
    * * * * * test -e /var/run/ppp0.pid || (poff -a; pon)
    0 4 * * * /etc/init.d/ntpdate restart > /dev/null

    Puis sur un autre serveur (un crontab de sauvegarde):
    0 0 * * * /usr/bin/rsync -vaz --max-delete=100 --delete-after --delete "root@XXXXXXXX" /mnt/telesave/pool/XXXX

    Le prob. ne viendrais pas de ton script par hazard!
    As tu bien mis "#!/usr/bin/php" en première ligne + ton script en éxécutable.
    • [^] # Re: Tout simplement!

      Posté par  . Évalué à 1.

      merci pour ta reponse

      J'aimerais savoir en quel type de fichier executable?
      parce que la moj script est en .php d'ou backup.php (*.?)
      parce quand le cron est execute il me met erreur a toute les lignes du php, ou sinon s'il fallait inserer dans la commande cron une valeur pour specifier que le script est en php.
      Quand tu dis en premiere ligne c'est dans quel fichier?(backup.php???)
      • [^] # Re: Tout simplement!

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

        > Quand tu dis en premiere ligne c'est dans quel fichier?(backup.php???)

        Oui.

        Essaye déjà de lancer le script a la main, sans cron.
      • [^] # Re: Tout simplement!

        Posté par  . Évalué à 6.

        C'est pas mon problème, mais si ça peut t'aider, voici quelques éléments de réponse qui te seront, je l'espère sincérement, utiles :
        1) Sous Unix/Linux, peu importe l'extention du fichier. Tu peux très bien appeler un fichier exécutable titi, tata.sh, truc.doc ou même machin.bat. Le système s'en fout et ne se base pas là dessus pour décider si un fichier est exécutable ou non. Il se base sur les attributs du fichier, visibles sous forme d'une suite de rwx- précédant le nom du fichier lors de la sortie de la commande ls -l monfichier. Les attributs fonctionnent ainsi : le premier caractère est - pour un fichier normal, d pour un répertoire (on ne va retenir que les valeurs courantes). Après, ça marche par groupe de 3 : rwx pour lecture (read), w pour écriture (write) et x pour exécuter (execute). Premier groupe de 3 : l'utilisateur, deuxième groupe de 3 : le groupe auquel appartient l'utilisateur, dernier groupe : les autres.
        2) Aucun problème, cf. ci-dessus.
        3) pour rendre un script php exécutable, il faut faire deux choses :
        A) Rendre le fichier exécutable. Pour ce faire, dans une console, tu fais :
        $ chmod u+x backup.php
        De ce fait, l'utilisateur a qui appartient le fichier backup.php pourra le lancer soit en se plaçant dans le répertoire contenant le fichier backup.php, soit en tapant toute la commante /chemin/backup.php
        B) Si c'est un script (c'est le cas de ton backup.php), il faut indiquer au système qui va interpréter ce qui est dans le fichier backup.php. Pour ça, y'a pas 36 façons : en première ligne du fichier backup.php, tu ajoutes un commentaire spécial qui va demander au shell d'exécuter l'interpréteur php, puis de lui expédier la suite du fichier backup.php. C'est donc bien dans ce fichier (backup.php) qu'il faut ajouter la première ligne citée dans les commentaires ci-dessus. Voilà qui répond à ton 4) !

        Sinon, si tu ne veux pas modifier ton script backup.php avec cette ligne, il faut à ce moment là, non pas rendre ton script exécutable comme décrit ci-dessus, mais remplacer ton ? de ton cron par la commande php complète, c'est à dire que :
        1 * * * * su - root -c ? /root/backup.php
        devient
        1 * * * * su - root -c "/usr/local/bin/php /root/backup.php"

        Il faudra évidement adapter /usr/local/bin/php en fonction de l'endroit où est installé php sur ton pc.
        Un simple
        $type php
        te renseignera sur la question.
        Voilà, j'espère que ce sera bon pour toi et que j'ai répondu à ta question/tes questions.
      • [^] # Re: Tout simplement!

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

        as-tu
        #!/usr/bin/php
        un truc comme ça sur ta première ligne ?
        sinon remplate /root/backup.php
        par php /root/backup.php
    • [^] # Re: Tout simplement!

      Posté par  . Évalué à 1.

      merci pour ta reponse.
      j'aimerais savoir en quel type de fichier fallait mettre le script?
      en .bat???
      sinon il ne faut pas rajouter une valuer pour specifier que cron doit effectuer sur un fichier php
      sinon quand tu parle d'inscrire une ligne?? ou doit elle etre inscrite???

Suivre le flux des commentaires

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