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.
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 é cron2 · 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 E3 · 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×/horaO 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.
*/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
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.
Os símbolos, explicados
o que cada um significa0 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.
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.
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.
Continuar a explorar
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.