IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

La commande crontab


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 15
    Par défaut La commande crontab
    Salut à tous, j'ai un petit probleme dans la commande crontab en association avec un script shell, ca ne marche pas chez moi, bon voila ce que j'ai fais:
    1- edition de mon crontab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    crontab -u root -e
    SHELL=/bin/sh
    PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin:/home/viper/bin
    */1 6 3 4 1  /home/viper/test.sh
    <escp>:wq!
     
    2- chmod +x test.sh
    3- echo "hellOOOO" >> test;
    d'abord j'ai placé test.sh sous /home/viper, mais ca n'a pas marché, sous /home/viper/bin non plus

    Merci de bien vouloir m'aider

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Je ne suis pas certain que tu aies bien compris ce que fait la crontab : elle exécutes la commande que tu lui donnes.

    Donc, tes lignes SHELL= et PATH= sont à enlever de la crontab, et à mettre dans ton script.

    Ensuite, il faut quer tu mettes le chemin absolu vers ton script dans la crontab.

    Ceci devrait fonctionner :

    Code de /home/viper/test.sh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!/bin/sh
     
    echo "coucou"
    Code de la crontab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    */1 6 3 4 1 /home/viper/test.sh
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre chevronné
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Par défaut
    6 parametre :
    c'est là l'erreur donc il en faut 5 pour les déclanchements.

  4. #4
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut Re: crontab
    Je tempère un peu ce que mon collègue Gangsoleil écrit ...

    Les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SHELL=/bin/sh
    PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin:/home/viper/bin
    ont leur place dans une crontab. En effet, il est possible de définir des variables d'environnement dans cette table, ainsi que l'explique le manuel :
    Citation Envoyé par man 5 crontab
    Une ligne active dans une crontab devra donc être soit une affectation de variable d'environnement, soit une commande cron. Une ligne d'affectation d'environnement est de la forme

    nom = valeur
    où les espaces autour du signe égal (=) sont facultatifs, et où tous les espaces ultérieurs feront partie intégrante de la valeur affectée à la variable ayant le nomindiqué. La chaîne de valeur peut être inscrite entre guillemets ou entre quotes afin de protéger les blancs initiaux et finaux.
    Plusieurs variables d'environnement sont automatiquement configurées par le démon cron(8). SHELL est rempli avec /bin/sh, LOGNAME et HOME sont configurées à partir de la ligne de /etc/passwd correspondant au propriétaire de la crontab. HOME et SHELL peuvent être surchargés par des affectations explicites dans la crontab, LOGNAME non.

    Par contre, cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    */1 6 3 4 1  /home/viper/test.sh
    n'est pas tout à fait correcte ...

    En effet, */1 signifierait : toutes les minutes avec un pas de 1 minutes. Il est superflu de préciser /1 sur un intervalle en *.

    Ensuite, tu demandes l'exécution de ton script :
    • - toutes les minutes (*)
      - de la sixieme heure (6)
      - du troisieme jour du mois (3)
      - du quatrieme mois de l'année (4)
      - du premier jour de la semaine (1 = lundi)

    Es tu sûr de ne vouloir le lancer que toutes les minutes de 6h à 6h59, aujourd'hui ?
    Il peut être superflu de préciser le jour de la semaine ... dans ce cas, un * pour ce champ fonctionne très bien et le script n'est lancé que le 3 avril de chaque année aux heures indiquées.

    Sinon, gangsoleil a tout à fait raison : il est prudent de ne pas faire confiance à l'environnement par défaut, lors de l'exécution de la crontab. En conséquence, il vaut mieux préciser le chemin absolu du script à lancer.

    Bon courage.

    P.S. Pour bster : il y a bien 5 arguments de période. C'est simplement gangsoleil qui a transformé par erreur un / en " ", ce qui semble augmenter le nombre de paramètres mais n'est qu'une typo.

  5. #5
    Membre chevronné
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Par défaut
    merci d'avoir completer/corriger. je revenais justement sur le sujet pour le faire après vérification du man page. :o tu m'a pris de vitesse parceque j'ai un débit interneuronal de 1200bauds..... seulement....

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Merci bien d'avoir corrigé les bêtises que j'ai pu dire.

    Outre le fait que je ne savais pas que la crontab opuvait prendre des arguments de type "nom=valeur", je n'ai pas pris le temps de regarder le man...

    PS : ai corrigé la typo que j'avais introduite par erreur.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. Soucis commande crontab
    Par Invité dans le forum Administration système
    Réponses: 3
    Dernier message: 13/10/2012, 16h03
  2. Crontab & commande system PHP
    Par helios399 dans le forum Linux
    Réponses: 5
    Dernier message: 06/07/2011, 19h45
  3. utilisation de la commande crontab -e
    Par fbb53 dans le forum Shell et commandes GNU
    Réponses: 30
    Dernier message: 13/04/2011, 22h02
  4. Crontab: command not found
    Par wiss20000 dans le forum Administration système
    Réponses: 7
    Dernier message: 22/03/2011, 15h26
  5. Lancer commande en différé sans Crontab
    Par mamax29 dans le forum Unix
    Réponses: 5
    Dernier message: 09/08/2010, 22h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo