Automatiser des tâches avec init et cron

Décembre 2016

Sous Linux, il est facile d'automatiser des tâches, avec init pour lancer une tâche au démarrage, ou bien avec cron pour lancer une tâche à un moment précis.
Il y a plusieurs logiciels gérant les crons, ici le logiciel crontab est présenté.


Créer une nouvelle tâche


Avant tout, il faut créer un nouveau fichier qui exécutera le code que l'on veut.
Pour cela, il suffit d'ouvrir un éditeur (en tant que root), et d'enregistrer le fichier dans le dossier voulu (voir plus bas). N'oubliez pas d'indiquer l'interpréteur à utiliser au début du fichier.
Par exemple (avec bash) :
#!/bin/bash
commande;
...
Il est possible d'utiliser un autre interpréteur, en changeant simplement #!/bin/bash par l'interpréteur choisi : #!/bin/python, #!/bin/perl, etc.

Ensuite, il faut rendre le fichier exécutable :
# chmod 755 /repertoire/monfichier

Lancer une tâche au démarrage : init


Présentation


init est le premier processus, exécuté par le noyau, qui est père de tous les autres (son PID est donc 1).
Au démarrage, il lance divers scripts contenus dans /etc/init.d/ ou /etc/rc*.d/.
C'est dans le dossier /etc/init.d qu'il faut enregistrer les fichiers à lancer au démarrage.
Il faut ensuite ajouter le fichier à la liste des processus lancés au démarrage :
# update-rc.d mon-fichier defaults

Plus d'informations


Tapez dans un terminal :
  • ls -l /etc/init.d/ pour voir les scripts lancés au démarrage
  • init --help
  • cat /etc/init.d/README
  • man init
  • info init
  • man update-rc.d

Lancer une tâche à un moment précis : crontab


Présentation


cron permet de lancer une tâche régulièrement : tous les jours, toutes les semaines, toutes les heures...
Avec crontab, il y a un fichier cron par utilisateur.

Ajouter une tâche


Il existe plusieurs dossiers contenant des tâches exécutées par les crons :
  • /etc/cron.hourly : les scripts exécutés chaque heure.
  • /etc/cron.daily : les scripts exécutés chaque jour.
  • /etc/cron.weekly : les scripts exécutés chaque semaine.
  • /etc/cron.monthly : les scripts exécutés chaque mois.

Il suffit de créer un fichier dans le dossier correspondant.

Cependant, il est possible de vouloir lancer des tâches à des moments plus précis.
Pour cela, il faut créer un fichier respectant la syntaxe de crontab (voir chapitre plus bas) dans /etc/cron.d/, qui contiendra lui-même une commande ou qui exécutera un autre fichier.


Il est aussi possible de créer des tâches pour un utilisateur en particulier. Il faut éditer le fichier crontab de l'utilisateur (voir plus bas).

Syntaxe du fichier crontab


Il y a déjà beaucoup de tutoriels sur le web à ce sujet.
Voir :

Lancer une tâche pour un utilisateur seulement


Pour cela, il faut éditer son fichier utilisateur, en tapant dans une console crontab -e.
Si vous voulez créer un fichier crontab pour un autre utilisateur que l'utilisateur courant, il faut passer par la commande # crontab -u utilisateur -e.
Il faut ensuite enregistrer le fichier, sans changer son nom ou son emplacement.
Il faudra toujours passer par la commande crontab -e pour éditer le fichier.

Plus d'informations


Tapez dans un terminal :
  • man cron
  • info cron

Voir :

Cron avec une interface graphique


Il existe divers logiciels graphiques qui permettent de créer des tâches automatisées :
  • kcron
  • gcrontab

A voir également :

Ce document intitulé «  Automatiser des tâches avec init et cron  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.