Exécution_périodique_d_un_script_avec_cronjob__centos___french_

Exécution périodique d’un script avec cronjob

Souvent, il est utile de pouvoir programmer l’exécution de processus de manière planifiée, par exemple pour lancer des sauvegardes ou pour envoyer des emails. cronjob permet de faire cela.

Assurez-vous que le service crond.service est actif et activé :

systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (]8;;file://centos/usr/lib/systemd/system/crond.service/usr/lib/systemd/system/crond.service]8;;; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-10-22 18:44:38 UTC; 52min ago
 Main PID: 795 (crond)
    Tasks: 1 (limit: 12523)
   Memory: 1.9M
   CGroup: /system.slice/crond.service
           └─795 /usr/sbin/crond -n

Le service doit être en état active (running).

Créer un script /usr/local/bin/loadavg.sh qui va simplement générer une log :

sudo bash -c 'cat <<EOF> /usr/local/bin/my-job.sh
#!/bin/bash
echo "Helloworld" >> /var/log/my-job.log
EOF'

Rendez-le exécutable:

sudo chmod a+x /usr/local/bin/my-job.sh

Lancez le script:

sudo /usr/local/bin/my-job.sh

Vérifier que le script a bien écrit des données dans le fichier /var/log/loadavg.log :

sudo cat /var/log/my-job.log
Helloworld

Maintenant, supprimons cette log:

sudo rm /var/log/my-job.log

Créez un cronjob qui exécute /usr/local/bin/myjob.sh une fois par minute entre 8h et 17h et entre lundi et vendredi :

sudo crontab -e

Ajouter :

# Min  Hour  DoM  Month  DoW  Command
*      *     *    *      *    /usr/local/bin/my-job.sh

Sauvegarder puis vérifier que l’ajout a bien été pris en compte:

sudo crontab -l
# Min  Hour  DoM  Month  DoW  Command
*      *     *    *      *    /usr/local/bin/my-job.sh

Vérifier que le service crond.service tourne :

systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (]8;;file://centos/usr/lib/systemd/system/crond.service/usr/lib/systemd/system/crond.service]8;;; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-10-22 18:44:38 UTC; 59min ago
 Main PID: 795 (crond)
    Tasks: 1 (limit: 12523)
   Memory: 1.9M
   CGroup: /system.slice/crond.service
           └─795 /usr/sbin/crond -n

Au bout de quelques minutes, vérifier que le job a bien tourné. Une ligne doit indiquer que le script /usr/local/bin/my-job.sh a tourné :

sudo tail /var/log/cron
Oct 22 19:45:39 centos crontab[3964]: (root) REPLACE (root)
Oct 22 19:45:39 centos crontab[3964]: (root) END EDIT (root)
Oct 22 19:45:41 centos crontab[3968]: (root) BEGIN EDIT (root)
Oct 22 19:45:45 centos crontab[3968]: (root) END EDIT (root)
Oct 22 19:45:52 centos crontab[3972]: (root) LIST (root)
Oct 22 19:46:01 centos crond[795]: (root) RELOAD (/var/spool/cron/root)
Oct 22 19:46:01 centos CROND[3990]: (root) CMD (/usr/local/bin/my-job.sh)
Oct 22 19:46:48 centos crontab[4012]: (root) LIST (root)
Oct 22 19:47:01 centos CROND[4028]: (root) CMD (/usr/local/bin/my-job.sh)
Oct 22 19:48:01 centos CROND[4053]: (root) CMD (/usr/local/bin/my-job.sh)

Puis vérifier que le fichier de log a été créé :

sudo cat /var/log/my-job.log
Helloworld

Le message Helloworld doit être affiché.

Vous savez maintenant planifier l’exécution de jobs à une heure précise ou périodiquement.

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×