Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'aide pour un exercice pratique [crontab]

Création d'une crontab particulière

Sujet résolu
    21 octobre 2016 à 9:13:34

    Bonjour,

    Actuellement étudiant en DUT Info j'ai un exercice sur Linux a réaliser qui me pose problème.

    La première partie de cet exercice traitait de la fonction at, avec laquelle je n'ai pas eu de problème majeur.

    La seconde partie est plus compliqué, nous devons automatiser les tâches:

    On doit créer une crontab qui tous les jours récupère la date et l'espace disque.

    On doit créer sur le bureau cinq fichiers lundi.txt, mardi.txt jusquà vendredi.txt.

    Chaque jour on récupère la date et l'espace disque et elle doit enregistrer les données sur le jour correspondant.

    On oublie Samedi et Dimanche, ces jours ont tous simplement été supprimé pour simplifier l'exercice (ou pas!).

    Donc le lundi il crée le fichier, et il reste lisible toute la semaine jusqu'au lundi suivant, jour ou les données sont écrasés.

    Pour voir le fonctionnement on estime que une journée = 1 minute.

    Je sais pas si j'ai été clair, mais pour moi ça l'est en tout cas.

    Je suis un peu perdu au moment d'écrire la crontab nottament parce que une minute = une journée sinon j'aurai tous simplement utilisé le champ "jour de la semaine"

    avec une commande du genre: 

    00 08 * * 2 df > ~/Bureau/lundi.txt

    00 08 * * 3 df > ~/Bureau/mardi.txt

    Mais le fait qu''on travaille avec des minutes seulement me gêne dans la réflexion.

    Car dans ce cas lundi par exemple seront les minutes multiples de 5:

    */5 * * * * df >~/Bureau/lundi.txt

    Et mardi? bah ça sera toute les minutes tel que S=5x+1 (donc 6,11,16...) mais comment le noter, car */5+1 j'ai pas l'impression qu'il comprenne.

    De même comment je peux récupérer la date (en effacant la dernière sauvegarde sans effacer les paramètres, j'avai pensé à ça:)

    crontab -e

    */5 * * * * date>~/Bureau/lundi.txt

    */5 * * * * df >>~/Bureau/lundi.txt

    1,6,11,15... * * * * date>~/Bureau/mardi.txt

    1,6,11,15... * * * * date>~/Bureau/mardi.txt

    Est ce que quelqu'un peut m'éclairer?

    Merci d'avance pour votre aide/ vos conseils.

    -
    Edité par AdrienLebronGracia 21 octobre 2016 à 9:16:34

    • Partager sur Facebook
    • Partager sur Twitter
      21 octobre 2016 à 11:28:54

      salut,

      On doit créer sur le bureau cinq fichiers lundi.txt, mardi.txt jusquà vendredi.txt.
      Chaque jour on récupère la date et l'espace disque et elle doit enregistrer les données sur le jour correspondant.

       ça, ça se scripte facilement. cf. man date pour lui faire afficher le jour, et qui servira à définir dans quel fichier écrire.

      ensuite, tu configures la crontab pour appeler le script à heure fixe, du lundi au vendredi (comme pour énerver Joe, cf. man 5 crontab)

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        21 octobre 2016 à 12:06:26

        voici un petit programme bash que j ai realisé pour pouvoir t'aider , tu devras faire le changement comme le home/NomCompte

        tu n 'auras besoin d'ecrire une seul fois dans crontab ,  pas besoins de répéter

        car le test du jour est present dans le programme avec

        date +%u

        essaye de mettre 

        0-59/5 * * * * etatDesDisques.sh


        au lieu de * /5 * * * *

        #! /bin/bash
        ## nom du fichier etatDesDisques.sh
        ## ne pas oublier de faire chmod +x etatDesDisques.sh 
        ## pour qu il soit executable 
        ## ensuite tu le met dans ton crontab
        MKDR="/bin/mkdir"
        
        jour=`/bin/date +%u`
        ## test valeur de jour a commenter si tu prefere
        echo $jour
        ## retourne 1 pr lundi 2 pr mardi
        ## 3 pr mercredi etc ..
        DATE=`date`
        ESPACE=`df -h`
        homeAMoi='/home/monCompteAMoi' # a modifier monCompteAMoi
        destination="$homeAMoi/Bureau"
        
        ## declaration de tous les fichiers
        
        jourFichierDest1="$destination/lundi.txt"
        jourFichierDest2="$destination/mardi.txt"
        jourFichierDest3="$destination/mercredi.txt"
        jourFichierDest4="$destination/jeudi.txt"
        jourFichierDest5="$destination/vendredi.txt"
        
        # test si le repertoire est existant
        if [ -d "$destination" ]; then
                # verifie si le repertoire existe .
                echo $destination existe deja ;
        else
                echo $destination n existe pas ;
                ##--parent pour la recursivite
                ## creation du repertoire
                $MKDR --parents $destination;
                echo $destination a ete creer ;
        fi
        
        
        case $jour in
        
                1)
                        echo -e "$DATE\n$ESPACE"  >$jourFichierDest1
                        ;;
                2)
                        echo -e "$DATE\n$ESPACE" >$jourFichierDest2
                        ;;
                3)
                        echo -e "$DATE\n$ESPACE" >$jourFichierDest3
                        ;;
                4)
                        echo -e "$DATE\n$ESPACE" >$jourFichierDest4
                        ;;
                5)
                        echo -e "$DATE\n$ESPACE" >$jourFichierDest5
                        ;;
                *)
                        echo jour de la semaine non pris en charge
                        exit 1
        
        esac
        



        -
        Edité par gmormorromrom 21 octobre 2016 à 12:42:57

        • Partager sur Facebook
        • Partager sur Twitter
        Les petites choses ont leur importance ; c'est toujours par elles qu'on se perd. Auteur: Fedor Dostoïevski
          21 octobre 2016 à 12:34:56

          c'est bien bavard, inutilement.

          #!/bin/sh
          
          { date; df -h;} > ~/$(date +%A).txt


          c'est tout !

          correctement configuré, crontab l'exécutera du lundi au vendredi.

          -
          Edité par dantonq 21 octobre 2016 à 12:35:48

          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

            21 octobre 2016 à 12:46:52

            pas mal

            j ai un petit soucis meme quand je fais un

            export LANG=fr
            date +%A 

             cela me retourne

             Friday

             pour completer daltonbien  le crontab devrait etre du genre

            0-59/5 * * * 1-5 {date; df -h;} > ~/$(date +%A).txt

            Merci daltonbien

            -
            Edité par gmormorromrom 22 octobre 2016 à 7:45:32

            • Partager sur Facebook
            • Partager sur Twitter
            Les petites choses ont leur importance ; c'est toujours par elles qu'on se perd. Auteur: Fedor Dostoïevski
              21 octobre 2016 à 12:58:04

              attention ! cron a adopté le % comme caractère de fin de ligne.
              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                21 octobre 2016 à 13:22:41

                daltonbien tu veux dire que
                date +%A

                pourrai engendrer un petit pépin dans son exécution ?

                je vais le tester pour voir .

                Je reviens après une heure de test sur l 'exemple de daltonbien et le problème soulevé par le % 

                j ai enfin réalisé ceci

                0-59/5 * * * 1-5 d=`/bin/date` ; c=`/bin/df -h`; echo -e  "$d\\n$c" > ~/$(/bin/date +\%A).txt


                j'ai utilisé le caractère '\' pour la commande 

                echo \n


                et pourtant les accolades {} ça n'a pas marché je sais pas trop pourquoi mais quand même grand merci à daltonbien

                -
                Edité par gmormorromrom 21 octobre 2016 à 15:48:26

                • Partager sur Facebook
                • Partager sur Twitter
                Les petites choses ont leur importance ; c'est toujours par elles qu'on se perd. Auteur: Fedor Dostoïevski
                  22 octobre 2016 à 10:42:00

                  Merci pour vos réponses nombreuses, je testerai tous ça dans la semaine qui suit.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 octobre 2016 à 13:11:13

                    @gmormorromrom :

                    les variables sont superflues, et elles obligent à faire un echo

                    lancer les commandes entre des accolades, et en redirigeant le tout vers le fichier fonctionne correctement.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                      22 octobre 2016 à 19:08:07

                      Je vais réétudier d'où viens l'erreur que j ai commise , en ce moment je prends un congés mes vacances viennent de commencer . Merci @daltonbien, tu es vraiment pro dans tes réponses. 

                      enfin, j'ai trouvé le pépin c'est tout simplement que j aurai du écrire un fichier Bash et l’exécuter sous Crontab .

                      Encore merci DaltonBien ça marche à merveille

                      -
                      Edité par gmormorromrom 1 janvier 2017 à 21:04:31

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Les petites choses ont leur importance ; c'est toujours par elles qu'on se perd. Auteur: Fedor Dostoïevski
                        25 octobre 2016 à 17:31:05

                        Comment faire pour exécuter deux commandes (c'est à dire je veux que il m'affiche la date, puis l'espace disque, mais la syntaxe doit être fausse car il fait rien du coup tandis que si je met juste date il comprend.

                        Je veux récuperer la date et l'espace disque (par df) et l'envoyer sur le fichier lundi.txt

                        Merci de m'éclairer sur ce point j'ai presque fini

                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 janvier 2017 à 20:57:06

                          Pour revenir a la date c'est OK

                          j ai juste ajouter ceci

                          export LANG=fr_FR
                          date +%A
                          



                          • Partager sur Facebook
                          • Partager sur Twitter
                          Les petites choses ont leur importance ; c'est toujours par elles qu'on se perd. Auteur: Fedor Dostoïevski
                            1 janvier 2017 à 21:08:39

                            tu peux t'en sortir ainsi aussi :
                            LC_TIME=fr_FR date +%A
                            ça configure la variable d'environnement LC_TIME à fr_FR, uniquement pour cette commande date.

                            -
                            Edité par dantonq 1 janvier 2017 à 21:09:15

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                            Besoin d'aide pour un exercice pratique [crontab]

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown