Executar um script da shell a horas específicas
Para agendar um script da shell para ser executado a horas específicas, use launchd
ou cron
.
Agendar tarefas com launchd
Utilize
launchd
em vez decron
para agendar tarefas. Comlaunchd
, se uma tarefa for ignorada porque o computador está desligado ou em modo de pausa, a tarefa é adicionada à fila de espera quando o computador estiver novamente ativo.Para usar
launchd
para agendar tarefas temporizadas, use a chaveStartCalendarInterval
ouStartInterval
.Encontrará mais informação acerca de
launchd
respetiva página man.
Usar cron para agendar uma tarefa
O daemon cron
executa comandos agendados definidos em ficheiros crontab. O daemon cron
pesquisa ficheiros crontab na pasta /usr/lib/cron/tabs/ com o nomes das contas em /etc/passwd, e carrega os ficheiros para a memória. O daemon cron
também pesquisa ficheiros crontab na pasta /etc/crontab/, que estão noutro formato. Em seguida, cron
executa ciclos a cada minuto, examinando os ficheiros crontab armazenados e verificando cada comando para ver se deve ser executado no minuto atual.
Quando o comando é executado, a saída é enviada ao proprietário do ficheiro crontab ou ao utilizador nomeado na variável de ambiente MAILTO opcional no ficheiro crontab.
Usa a ferramenta crontab
para instalar, desinstalar ou listar as tabelas usadas para conduzir o daemon cron
. Os utilizadores podem ter o seu próprio ficheiro crontab.
Para configurar o ficheiro crontab, use o comando
crontab -e
. Desta forma, abre um ficheiro crontab vazio no modo de edição.Eis um exemplo de um ficheiro 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
Neste exemplo, a primeira entrada repara as permissões do disco para o volume MacHD às 18:30 diariamente, de segunda a sexta:
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
A segunda entrada agenda uma operação de reparação de volume para ser executada às 23:50, todos os domingos:
50 23 * * 0 diskutil repairVolume /Volumes/MacHD