notifica di avvio in caso di uscita anomala


2

Ho un piano di lavoro di avvio che esegue un semplice script di shell che invoca rdiff-backup per eseguire il backup di una directory remota su SSH sul mio computer. Il lavoro viene eseguito ogni ora e funziona bene.

Tranne l'altro giorno si è verificata un'interruzione dell'alimentazione * e il processo di backup rdiff è stato interrotto. La volta successiva che launchd ha eseguito lo script, rdiff-backup ha avuto esito negativo e ha registrato il suo errore nel percorso specificato nel plist. launchd, notando il codice di uscita anomalo, ha smesso di provare a eseguire lo script.

E non ne avevo idea da sei giorni.

Ovviamente non voglio una notifica del codice di uscita ogni volta che lo script termina. Cosa posso fare per essere avvisato solo di uscite anomale?

(*) risulta che la mia batteria UPS stava superando l'autotest quando richiamata, ma in realtà non era in grado di alimentare anche un carico minimo per più di 3 secondi.

Risposte:


1

L'approccio tradizionale, ad esempio con i cronlavori, consiste nel convogliare l'errore standard a un programma come mailse fosse abbastanza intelligente da non inviarti posta vuota. La differenza con launchd, come hai scoperto, è che il meccanismo per il reindirizzamento dell'errore standard sta dando una possibilità StandardErrorPathper la sua scrittura, che non è conveniente per questo scopo come terminare la voce crontab con | mail ….

La mia solita soluzione è che uno script wrapper controlli StandardErrorPathe avvisami se c'è un problema. Questo può far parte dello stesso processo di avvio, quindi il controllo avviene prima della successiva esecuzione pianificata oppure è possibile disporre di un processo separato che gestisce solo i registri degli errori (magari utilizzando una QueueDirectorieschiave).

Penso che potresti, ad esempio, utilizzare una pipa denominata come lavoro StandardErrorPath, ma in realtà non l'ho mai provato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.