Agendar tarefas com cron: primeiro o horário, depois o comando
Uma expressão cron determina os momentos em que uma tarefa deve arrancar. Na crontab de um utilizador Linux, cinco campos de tempo antecedem o comando. O gerador prepara esses campos; a instalação e execução da tarefa continuam a ser feitas no servidor.
Para cópias de segurança, limpeza de registos ou importações periódicas, confirme a frequência e as datas seguintes antes de guardar a configuração. Uma sintaxe válida não confirma os caminhos dos ficheiros, as permissões nem o resultado do programa.
Criar uma expressão sem decorar a sintaxe
- Escolha um modelo e ajuste os campos necessários.
- Use uma lista para valores separados ou um intervalo para valores consecutivos.
- Para validar uma configuração existente, cole apenas os cinco campos, sem o comando.
- Compare as datas em UTC com o fuso do servidor e copie a expressão.
Como ler os cinco campos de cron
A ordem é minuto, hora, dia do mês, mês e dia da semana, separados por espaços. Domingo aceita 0 ou 7. Os nomes utilizados dentro da expressão são JAN–DEC e SUN–SAT, mesmo quando a interface está em português.
| Campo | Valores |
|---|---|
| Minuto | 0–59 |
| Hora | 0–23 |
| Dia do mês | 1–31 |
| Mês | 1–12 |
| Dia da semana | 0–7 |
- * seleciona todos os valores do campo.
- , separa valores, como 0,30.
- - define um intervalo com os extremos incluídos, como 1-5.
- / indica um passo dentro do campo, como
*/15.
Exemplos de crontab para tarefas recorrentes
As horas abaixo referem-se ao fuso do agendador. Um horário de segunda a sexta não exclui feriados; essa condição precisa de ser verificada pelo programa, se for necessária.
| Expressão | Execução |
|---|---|
*/5 * * * * | De cinco em cinco minutos |
30 2 * * * | Todos os dias às 02:30 |
0 9 * * 1-5 | De segunda a sexta às 09:00 |
0 0 * * 0 | Ao domingo, à meia-noite |
0 0 1 * * | No primeiro dia de cada mês |
0 0 29 2 * | No dia 29 de fevereiro de anos bissextos |
Adicionar a tarefa à crontab
Execute crontab -e para editar as tarefas do utilizador atual. O exemplo seguinte corre o script de cópia de segurança todos os dias às 02:30, de acordo com o fuso horário configurado no cron.
Utilize caminhos absolutos e verifique as permissões de execução. O serviço cron deve estar ativo e o script deve ter acesso aos recursos de que necessita, mesmo sem a sua sessão de terminal aberta.
30 2 * * * /usr/local/bin/backup.shDúvidas sobre expressões cron
A pré-visualização usa a hora de Lisboa?
Não, utiliza UTC, sem mudança para a hora de verão. A expressão não inclui um fuso horário. Confirme o fuso do agendador para saber como será interpretada no servidor.
O intervalo começa quando guardo a tarefa?
Não. */5 no campo dos minutos corresponde aos minutos 0, 5, 10 e seguintes de cada hora. Não é uma contagem de cinco minutos a partir do momento da gravação.
O dia do mês e o dia da semana têm de coincidir?
Quando ambos estão limitados, basta um corresponder. 0 9 1 * MON executa no dia 1 de cada mês ou à segunda-feira às 09:00. Se um campo começar por *, as duas condições de dia têm de ser cumpridas.
Posso usar uma expressão Quartz com segundos?
O gerador aceita apenas os cinco campos de Linux cron. Segundos, ?, L, W, # e @reboot não são suportados. Os aliases @hourly, @daily, @weekly, @monthly e @yearly são convertidos em cinco campos.
Porque aparecem menos de cinco datas?
A pesquisa abrange os próximos oito anos. Datas inexistentes, como 31 de fevereiro, não produzem resultados. Uma tarefa marcada para 29 de fevereiro pode ter menos de cinco ocorrências nesse período.
