Come posso eseguire un lavoro una volta al giorno con launchd, indipendentemente da quando il computer è acceso?

7

Vorrei eseguire uno script di shell ogni giorno, ma non necessariamente in un momento specifico. Il computer su cui viene eseguito lo script è acceso in momenti irregolari e non è possibile formulare ipotesi quando ciò avverrà.

Per questo, mi piacerebbe che launchd si comporti un po 'come anacron: ha solo bisogno di eseguire il lavoro una volta al giorno , in qualsiasi momento opportuno .

La maggior parte dei post che ho visto qui o su altri siti descrivono cose come "in esecuzione ogni giorno alle 05:00", che non è utile per me se la macchina è spenta in quel momento ...

Come scrivo un launchd plist specificando tale comportamento?

    
posta jstarek 13.08.2011 - 10:59
fonte

1 risposta

6

Launchd eseguirà i tuoi lavori la prossima volta che il Mac si risveglia dal sonno. Quindi se spegni il tuo Mac, questo non funzionerà. Dovrai mettere il tuo Mac in stop per far funzionare lo script giornaliero quando il Mac si sveglia se l'ultima volta che avrebbe dovuto essere eseguito era durante la durata del sonno.

man launchd.plist:

If the system is asleep, the job will be started the next time the computer wakes up. If multiple intervals transpire before the computer is woken, those events will be coalesced into one event upon wake from sleep.

O in altre parole: non devi fare nulla di specifico, è comunque il comportamento predefinito.

Se vuoi eseguire il comando anche una volta dopo il riavvio, aggiungi

<Key>RunAtLoad</Key>
<true/>

al tuo launchd plist.

    
risposta data 13.08.2011 - 11:48
fonte

Leggi altre domande sui tag