Launchd - Esegui attività più volte tra un intervallo di tempo

0

Voglio eseguire uno script ogni 15 minuti tra le 12:00 AM e le 4:00 AM. C'è un modo per farlo con launchd?

So che è possibile specificare e array di dizionari utilizzando StartCalendarInterval per ottenere ciò, ma mi piacerebbe poter facilmente modificare l'intervallo se lo desidera. Stavo pensando qualcosa sulla falsariga di combinare StartCalendarInterval con StartInterval, ma non so come specificare un tempo di arresto.

L'altra alternativa è controllare l'ora del mio script che sto utilizzando, ma ancora una volta, penso che preferirei usare launchd per completare l'attività nel caso volessi aggiungere altri script.

Sono abbastanza sicuro che questo può essere fatto anche con cron (potremmo metterlo qui per riferimento se qualcuno sa come), ma voglio restare con launchd dato che Apple sembra stia eliminando cron.

    
posta tifkin 06.12.2012 - 20:46
fonte

1 risposta

2

Puoi stampare i dizionari StartCalendarInterval con qualcosa del genere: for h in {0..4}; do for m in {0,15,30,45}; do echo "<dict><key>Hour</key><integer>$h</integer><key>Minute</key><integer>$m</integer><key>Second</key><integer>0</integer></dict>"; done; done .

È anche possibile eseguire lo script ogni 15 minuti, ma uscire a seconda dell'ora:

h=$(date +%-H)
m=$(date +%-M)
[[ $h -gt 4 || $h -eq 4 && $m -ne 0 ]] && exit

O esegui EDITOR=nano crontab -e e aggiungi una riga come */15 0-4 * * * ~/bin/script .

    
risposta data 06.12.2012 - 21:53
fonte

Leggi altre domande sui tag