Que vous utilisiez le Planificateur de tâches Windows ou cron Linux, les tâches planifiées nécessitent un monitoring. Ce guide couvre les deux plateformes avec des exemples pratiques pour des alertes fiables.
Linux : Monitoring des Tâches Cron
Monitoring Cron Basique
Ajoutez un ping heartbeat à votre entrée cron :
# Avant
0 2 * * * /home/user/backup.sh
# Après
0 2 * * * /home/user/backup.sh && curl -fsS https://wizstatus.com/ping/TOKEN
Approche par Script Wrapper
Créez un wrapper réutilisable :
#!/bin/bash
# /usr/local/bin/cron-monitor
PING_URL="$1"
shift
# Exécuter la commande
"$@"
EXIT_CODE=$?
# Pinguer en cas de succès
if [ $EXIT_CODE -eq 0 ]; then
curl -fsS --retry 3 "$PING_URL"
fi
exit $EXIT_CODE
Utilisation :
0 2 * * * /usr/local/bin/cron-monitor https://wizstatus.com/ping/TOKEN /home/user/backup.sh
Timers Systemd (Linux Moderne)
Pour les systèmes basés sur systemd, utilisez les unités timer :
# /etc/systemd/system/backup.service
[Unit]
Description=Sauvegarde Quotidienne
[Service]
Type=oneshot
ExecStart=/home/user/backup.sh
ExecStartPost=/usr/bin/curl -fsS https://wizstatus.com/ping/TOKEN
# /etc/systemd/system/backup.timer
[Unit]
Description=Exécuter sauvegarde quotidiennement
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
Windows : Monitoring du Planificateur de Tâches
Méthode 1 : Wrapper PowerShell
Créez un script wrapper PowerShell :
# C:\Scripts\Task-Monitor.ps1
param(
[string]$PingUrl,
[string]$ScriptPath,
[string[]]$Arguments
)
try {
# Exécuter le script réel
if ($Arguments) {
& $ScriptPath @Arguments
} else {
& $ScriptPath
}
# Pinguer en cas de succès
if ($LASTEXITCODE -eq 0 -or $LASTEXITCODE -eq $null) {
Invoke-WebRequest -Uri $PingUrl -Method GET -UseBasicParsing | Out-Null
}
}
catch {
Write-Error $_.Exception.Message
exit 1
}
Méthode 2 : Fichier Batch Wrapper
@echo off
REM C:\Scripts\task-wrapper.bat
SET PING_URL=%1
SHIFT
SET COMMAND=%*
REM Exécuter la commande
CALL %COMMAND%
REM Vérifier le code de sortie et pinguer
IF %ERRORLEVEL% EQU 0 (
curl -s "%PING_URL%"
)
Solutions Multi-Plateformes
Script Python
Fonctionne sur Windows et Linux :
#!/usr/bin/env python3
# monitor-task.py
import subprocess
import sys
import requests
def main():
ping_url = sys.argv[1]
command = sys.argv[2:]
try:
result = subprocess.run(command, check=True)
if result.returncode == 0:
requests.get(ping_url, timeout=30)
except subprocess.CalledProcessError as e:
print(f"Commande échouée : {e}")
sys.exit(1)
if __name__ == "__main__":
main()
Utilisation :
# Linux
python3 monitor-task.py https://wizstatus.com/ping/TOKEN /chemin/vers/script.sh
# Windows
python monitor-task.py https://wizstatus.com/ping/TOKEN C:\Scripts\backup.bat
Comparaison des Plateformes
| Fonctionnalité | Linux Cron | Windows Task Scheduler |
|---|---|---|
| Format de config | Texte crontab | GUI + XML |
| Fuseau horaire | Défaut système | Configurable par tâche |
| Exécutions manquées | Non exécutées | Configurable |
| Dépendances | Manuelles | Dépendances d'actions |
| Déclencheurs événements | Via systemd | Support natif |
| Code de sortie | Disponible | Disponible |
Monitorez toutes vos tâches planifiées sur Windows et Linux. Le monitoring heartbeat WizStatus fonctionne avec toute plateforme capable de faire des requêtes HTTP.