In questo scenario ci troviamo su una macchina Linux in cui abbiamo bisogno di monitorare lo stato di Cups e, in caso di crash del servizio, riavviarlo.
Per raggiungere questo scopo si possono seguire vari approcci. In questo articolo ne illustriamo uno, che non è il migliore, ma è sufficientemente efficace. Seguiranno aggiornamenti in cui illustrerò gli altri approcci.
Metodo del loop infinito di controllo
Questo approccio è piuttosto minimalista, ma con il quale si ottiene un comportamento simile ad un watchdog.
#!/bin/bash
# /usr/local/bin/cups-watchdog-light.sh
LOGFILE="/var/log/cups-watchdog.log"
SLEEP=30
echo "$(date '+%Y-%m-%d %H:%M:%S') - Watchdog avviato" >> "$LOGFILE"
while true; do
if ! pidof cupsd >/dev/null 2>&1; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - CUPS non attivo, riavvio..." >> "$LOGFILE"
/etc/init.d/cups restart >>"$LOGFILE" 2>&1
fi
sleep "$SLEEP"
done
Lo script è semplice. Abbiamo:
- Loop infinito con uno sleep parametrizzabile impostato a 30 secondi
- Controllo dell’esistenza di un processo cupsd
- In caso di assenza di un processo cupsd, tracciatura nel log e riavvio del servizio