Automatisation des tâches sur un serveur Debian

C'est l'un des avantages d'avoir un serveur dédié, l'automatisation des tâches. Sur un serveur Linux, le système d'automatisation repose sur l'utilitaire cron. Vous trouverez des scripts d'automatisation en fin de page.

L'utilitaire CRON

CRON est un petit utilitaire fort utile dans la gestion des serveurs Unix / Linux. Il permet d'exécuter automatiquement une application, une commande, ou une tâche spécifique à intervalles réguliers ou bien à des moments précis. La commande CRON est utilisée pour automatiser des sauvegardes (on parle de backup), notamment à des heures où le serveur est le moins sollicité comme la nuit où le nombre de visiteurs est beaucoup plus faible qu'en journée.

La syntaxe de la commande CRON

Pour éditer la table CRON, on utilise la commande crontab -e. Pour éditer la table CRON pour un utilisateur spécifique, on utilise cette commande crontab -e -u utilisateur.

Chaque ligne de la table correspond à la tâche a exécuter et est notée de la façon suivante :

mm hh jj MMM JJJ tâche > log

  • mm correspond aux minutes (de 0 à 59).
  • hh correspond aux heures (de 0 à 23).
  • jj correspond aux numéros du jours du mois (de 0 à 31).
  • MMM correspond aux numéros du mois (de 1 à 12) ou l'abréviation du nom du mois (Jan,Feb,…).
  • JJJ correspond aux noms du jour (0 pour dimanche, 1 pour lundi, …).
  • tâche correspond au nom du script ou de la commande à exécuter.
  • log correspond au nom du fichier log où sera stocké le journal des opérations. Si la clause > log n'est pas spécifiée, CRON enverra automatiquement un mail de confirmation. Pour éviter cela il suffit de spécifier > /dev/null.

Pour chaque unité de temps (minute/heure/…), les valeurs peuvent prendre les notations suivantes :

  • * Correspond à chaque unité de temps.
  • 3-7 Correspond aux unités de temps 3,4,5,6,7.
  • */10 Correspond à toute les 10 unités de temps (0,10,20,30,…).
  • 2,15 Correspond aux unités de temps 2 et 15.

Quelques exemples

Voici quelques exemples pour mieux montrer la syntaxe de la commande CRON

  • lancement du script clamdmon.sh tous les jours à 4h00

0 4 * * * /usr/sbin/clamdmon.sh > /var/log/daemon.log

  • lancement du script clamdmon.sh tous les jours à 4h00 & 19h00

0 4,19 * * * /usr/sbin/clamdmon.sh /var/log/daemon.log

  • lancement du script clamdmon.sh tous les 5 du mois à 2h30

30 2 5 * * /usr/sbin/clamdmon.sh /var/log/daemon.log

  • lancement du script clamdmon.sh tous les mardi,mercredi,jeudi du mois à 12h30

30 12 * * 3-5 /usr/sbin/clamdmon.sh /var/log/daemon.log

  • lancement du script clamdmon.sh tous les 10 minutes

*/10 * * * * /usr/sbin/clamdmon.sh /var/log/daemon.log

Configuration de cron

Pour configurer cron, il vous suffit de tapez cette ligne de commande en root

crontab -e

Ensuite, il ne vous reste plus qu'à compléter le fichier.

Vous pouvez aussi spécifier un utilisateur pour l'exécution de la commande cron. Par exemple, nous voulons exécuter une commande pour l'utilisateur amavis

crontab -e amavis

Dans ce cas précis, il faut vous assurer que l'utilisateur spécifié a les droits d'accès a votre script.

Scripts d'automatisation

Auteurs et sources