Saltar para o conteúdo

Tradutor de expressões cron:
o que faz esta linha?

Cole uma linha diretamente do crontab — apenas os cinco campos, ou a linha completa com o comando. O resultado é o agendamento numa única frase em português simples, cada campo descodificado, e as próximas dez datas em que é executado. Nada é enviado para lado nenhum: a interpretação corre no seu navegador.

Por onde começar

Leia os campos por esta ordem

As linhas de crontab herdadas raramente estão documentadas. Leia os cinco campos por esta ordem:

1 · Conte os campos

Cinco campos separados por espaços é crontab. Seis ou sete significa Quartz ou outro agendador que coloca os segundos em primeiro lugar — uma linguagem diferente que por acaso se parece. Tudo o que vem depois do quinto campo é o comando, não o agendamento.

5 = cron · 6+ = não é cron

2 · Leia primeiro os dois últimos

Dia do mês e dia da semana decidem em que dias. Se ambos tiverem números, pare aqui: o cron é executado quando qualquer um deles coincide — a regra do OU, e o erro de leitura clássico.

ambos definidos → OU, não E

3 · Depois os dois primeiros

Minuto e hora indicam a que horas nesses dias. Um asterisco no campo dos minutos significa 60 execuções por hora. O campo do mês só é relevante quando não é um asterisco.

* nos minutos = 60×/hora
Exemplo prático

O que faz cada linha deste crontab

O resultado de crontab -l num servidor desconhecido, traduzido linha a linha. Traduza qualquer uma delas — o botão carrega-a no leitor acima. As linhas completas também funcionam: cole um comando e tudo o resto na barra no topo, e o leitor interpreta o agendamento e identifica a parte que ignorou.

# m h dom mon dow command
*/5 * * * *   /usr/local/bin/health-ping.sh
30 3 * * *    /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
0 9 * * 1-5   /usr/local/bin/daily-digest.sh
0 6 1 * *     /usr/local/bin/invoice-run.sh
*/5 * * * *um ping de verificação a cada 5 minutos, a qualquer hora do dia ou da noite — 288 execuções por dia
30 3 * * *a cópia de segurança noturna às 03:30 — repare que é a única linha cuja saída vai para um registo
0 9 * * 1-5o resumo diário às 09:00, apenas em dias úteis — 1-5 no último campo é de segunda a sexta-feira
0 6 1 * *a faturação no dia 1 do mês às 06:00 — um 1 no campo do meio é uma data, não um dia da semana
Direção de leitura

Como ler cada símbolo do cron

Cada símbolo é uma forma comprimida, e é ao desconstruí-los mal que um agendamento é mal interpretado numa revisão:

  • Os passos contam a partir do mínimo do campo. */6 no campo da hora é 00, 06, 12, 18 — e não «seis horas depois da última execução».
  • Números em ambos os campos de dia significam OU, não E. O cron é executado quando qualquer um deles coincide, por isso o agendamento é mais amplo do que parece.
  • Nomes e atalhos são um dialeto. MON e @daily funcionam aqui e na maioria dos crons — mas os números são a grafia que qualquer cron aceita.
Veja a regra do OU demonstrada ao vivo

Os símbolos, explicados

o que cada um significa
*qualquer valor — no campo dos minutos, isso são 60 execuções por horatudo
*/6cada 6.º valor, contado a partir do mínimo do campoum passo
9-17um intervalo, com ambos os limites incluídosum intervalo
1,15exatamente estes valores, nada a maisuma lista
MON · JANnomes de 3 letras que alguns crons aceitam — esta página lê-os, mas os números viajam melhorlido aqui
@dailyum atalho para 0 0 * * * — expandido aqui para mostrar o que escondeexpandido
L # ? WQuartz (Jenkins, Spring) — um crontab rejeita a linha inteiranão é cron
Forma canónica

0 0 * * 0, @weekly e SUN

As quatro linhas abaixo são todas domingo à meia-noite. O tradutor lê cada uma delas e devolve a mesma frase e a mesma lista de próximas execuções.

Números — a grafia que qualquer cron aceita0 0 * * 0
O atalho@weekly
O nome do dia0 0 * * SUN
7 também significa domingo0 0 * * 7
Da biblioteca

Expressões cron do dia a dia

Cada uma já está descodificada, e tem uma ligação para a sua página completa — próximas execuções, variantes, e a linha de crontab pronta a copiar. O conjunto completo está na biblioteca de exemplos de cron.

Tarefa cron a cada minuto* * * * *
Tarefa cron a cada 5 minutos*/5 * * * *
Tarefa cron a cada 15 minutos*/15 * * * *
Tarefa cron a cada 30 minutos*/30 * * * *
Tarefa cron a cada hora0 * * * *
Tarefa cron a cada 6 horas0 */6 * * *
Tarefa cron diária à meia-noite0 0 * * *
Tarefa cron nos dias úteis0 0 * * 1-5
Tarefa cron aos domingos0 0 * * 0
Tarefa cron mensal0 0 1 * *
Tarefa cron trimestral0 0 1 */3 *
Tarefa cron anual0 0 1 1 *
FAQ

As expressões cron que as pessoas mais colam

Todos os minutos de todas as horas, todos os dias — 1 440 execuções por dia, 525 600 por ano. Os cinco campos são todos asteriscos, por isso nada está restrito. É o agendamento certo para um ping de verificação barato e o errado para quase tudo o resto. Herdada à frente de um script pesado, é a primeira linha a questionar.

Cada 5.º valor desse campo, contado a partir do mínimo. No campo dos minutos, */5 é executado aos :00, :05, :10 … :55 — 12 vezes por hora, exatamente nas marcas do relógio. Não significa «5 minutos depois da última execução»: o cron compara com valores fixos do relógio. Por isso */7 dá :00, :07 … :56 e depois :00 outra vez — um intervalo de 4 minutos no início de cada hora.

Todos os dias à meia-noite, hora do servidor — minuto 0 da hora 0, qualquer data, qualquer mês, qualquer dia da semana. É exatamente o agendamento que @daily abrevia. «Meia-noite» é a meia-noite do servidor, e nas noites de mudança de hora um servidor com hora local pode saltá-la ou repeti-la.

Idêntico. Os atalhos correspondem exatamente: @hourly = 0 * * * *, @daily e @midnight = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. A exceção é @reboot — não é sequer um agendamento, é executado quando o daemon do cron arranca. Este tradutor expande os atalhos para que os cinco campos por trás fiquem sempre visíveis.

Porque não vem de um crontab. O Quartz (Jenkins, Spring), alguns agendadores na nuvem e algumas bibliotecas de cron colocam um campo de segundos em primeiro lugar, o que dá seis — ou sete com um ano no final. Um crontab recusa-a. Se o campo dos segundos for 0, retire-o e os cinco campos restantes normalmente leem-se como POSIX. Se for outra coisa qualquer, o agendamento é executado com uma frequência inferior ao minuto, e o cron comum não consegue exprimir isso de todo.

É a forma que o Quartz usa para dizer «sem valor específico». O Quartz exige que exatamente um dos dois campos de dia fique em branco, e é esse que recebe o ponto de interrogação. O cron POSIX não tem essa regra nem o ? — um simples * faz o mesmo trabalho. Quando os dois campos de dia estão mesmo restritos, o cron é executado na união dos dois. Cole um ? num crontab e a linha é rejeitada.

Sim. Cole 30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1 e o leitor identifica os cinco campos do agendamento, traduz esses, e indica o resto da linha como a parte que ignorou. Também lê o formato do /etc/crontab, em que um nome de utilizador fica entre o agendamento e o comando. O que não faz é adivinhar uma linha com seis campos: um campo de segundos no início significa Quartz, não crontab, e isso é uma linguagem diferente.

Cole a expressão acima. A vista de resultados lista as próximas dez execuções como datas concretas, calculadas por um interpretador real no fuso horário do seu navegador. O crontab em si executa segundo o relógio do servidor: se a máquina corre em UTC e o utilizador não está nesse fuso, toda a lista desloca-se pelo respetivo diferencial. No entanto, nada indica se uma execução foi bem-sucedida — o cron só regista que foi iniciada.

As ferramentas grátis são só o começo.
O Uptimia cuida dos seus sites.

Uptime, SSL, validade de domínio, velocidade de página, transações — monitorização em 171+ locais em todo o mundo. Grátis por 30 dias.

30 dias grátis sem cartão cancele quando quiser plano gratuito após o teste
Mais de 100.000 sites monitorizados · conforme o RGPD