Eseguire uno script della shell in orari specifici
Per programmare l'esecuzione di uno script della shell in orari specifici, puoi utilizzare launchd
o cron
.
Programmare attività con launchd
Per programmare le attività, utilizza
launchd
anzichécron
. Conlaunchd
, se un'attività viene ignorata perché il computer è spento o in stop, l'attività viene aggiunta alla coda quando il computer è di nuovo attivo.Per programmare processi basati su timer mediante
launchd
, utilizza la chiaveStartCalendarInterval
oStartInterval
.Per ulteriori informazioni su
launchd
, consulta la relativa pagina man.
Utilizzare cron per programmare un'attività
Il daemon cron
esegue i comandi programmati definiti nei file crontab. Il daemon cron
cerca nella cartella /usr/lib/cron/tabs/ i file crontab chiamati con i nome degli account in /etc/passwd e carica i file nella memoria. Il daemon cron
cerca anche nella cartella /etc/crontab/ i file crontab con formato diverso. cron
esegue quindi un ciclo ogni minuto esaminando i file crontab archiviati e controllando ogni comando per verificare se deve essere eseguito nel minuto attuale.
Quando un comando viene eseguito, l'output viene inviato tramite e-mail al proprietario del file crontab o all'utente specificato nella variabile di ambiente facoltativa MAILTO del file crontab.
Puoi utilizzare lo strumento crontab
per installare, disinstallare o elencare le tabelle utilizzate per il funzionamento del daemon cron
. Ogni utente può disporre del proprio file crontab.
Per configurare il tuo file crontab, utilizza il comando
crontab -e
. Questo comando apre un file crontab vuoto in modalità di modifica.Ecco un esempio di file crontab:
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#min hour mday month wday command
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
50 23 * * 0 diskutil repairVolume /Volumes/MacHD
In questo esempio la prima voce ripara i permessi del disco per il volume MacHD ogni giorno alle 18:30, dal lunedì al venerdì:
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
La seconda voce programma l'esecuzione di un'operazione di riparazione del volume ogni domenica alle 23:50:
50 23 * * 0 diskutil repairVolume /Volumes/MacHD