1. La planification classique sous Linux : Le démon cron

Le service cron exécute des commandes à intervalles réguliers définis dans la table crontab. Sa syntaxe repose sur 5 champs temporels :

# Structure d'une ligne crontab :
# ┌───────────── minute (0 - 59)
# │ ┌───────────── heure (0 - 23)
# │ │ ┌───────────── jour du mois (1 - 31)
# │ │ │ ┌───────────── mois (1 - 12)
# │ │ │ │ ┌───────────── jour de la semaine (0 - 7, 0 et 7 étant dimanche)
# │ │ │ │ │
# * * * * * commande_a_executer

# Exécuter une sauvegarde chaque nuit à 02h30 du lundi au vendredi :
30 02 * * 1-5 /usr/local/bin/backup-prod.sh >> /var/log/backup.log 2>&1

2. La modernité avec les timers systemd

Les systemd timers remplacent avantageusement cron dans les architectures modernes :

  • Intégration native des logs de la tâche dans journald (facilité d’audit).
  • Gestion fine des dépendances de service avant le lancement.
  • Rattrapage automatique des tâches manquées si le serveur était éteint (directive Persistent=true).
# 1. Définition du timer : /etc/systemd/system/nettoyage.timer
[Unit]
Description=Déclencheur hebdomadaire de nettoyage des caches
RefuseManualStart=no

[Timer]
OnCalendar=Sun *-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

# 2. Définition du service associé : /etc/systemd/system/nettoyage.service
[Unit]
Description=Tâche de purge des fichiers temporaires

[Service]
Type=oneshot
ExecStart=/usr/local/bin/purge-caches.sh

3. Planification d’entreprise sous Windows Server : Task Scheduler

Sous Windows Server, le Planificateur de tâches (Task Scheduler) s’administre efficacement en PowerShell pour s’intégrer dans vos chaînes d’automatisation :

# 1. Définir l'action (exécution d'un script PowerShell)
 = New-ScheduledTaskAction -Execute "PowerShell.exe" `
          -Argument "-NoProfile -ExecutionPolicy Bypass -File C:ScriptsHealthCheck.ps1"

# 2. Définir le déclencheur (tous les jours à 01h00)
 = New-ScheduledTaskTrigger -Daily -At "01:00"

# 3. Définir le compte d'exécution (Compte de service SYSTEM)
 = New-ScheduledTaskPrincipal -UserId "NT AUTHORITYSYSTEM" -LogonType ServiceAccount

# 4. Enregistrer la tâche planifiée
Register-ScheduledTask -TaskName "AuditQuotidienSysteme" `
                       -Action  `
                       -Trigger  `
                       -Principal  `
                       -Description "Audit de sécurité quotidien de l'infrastructure"

Vérification des déclencheurs : Sous Linux, inspectez vos timers actifs via systemctl list-timers pour connaître l’heure exacte du dernier déclenchement et le décompte avant le prochain lancement.