CRON e CRONTAB: um pouco de teoria, uso e exemplos

"Cron" ou "Cron job" são tarefas agendadas para execução automática. Veremos aqui como agendar tarefas no Linux e quais os recursos disponíveis no Linux para ajudar nesse objetivo.

[ Hits: 37.779 ]

Por: Francisco Jose Lopes em 11/08/2017 | Blog: http://bladochico.qaplaweb.com.br


Formato de linha da tabela cron (ou crontab)



Os comandos são executados pelo cron quando os minutos, horas e meses de ano correspondem à hora atual e quando pelo menos um dos dois campos do dia (dia do mês ou dia da semana) corresponde à hora atual.

Um campo pode conter um asterisco (*), significando "qualquer".

Intervalos de números são permitidos. Os intervalos são dois números separados por um hífen. O intervalo especificado é inclusivo. Por exemplo, 8-11 para uma entrada de "horas" especifica a execução nas horas 8, 9, 10 e 11.

Listas são permitidas. Uma lista é um conjunto de números (ou intervalos) separados por vírgulas. Exemplos: "1,2,5,9", "0-4,8-12".

Os valores de salto podem ser usados em conjunto com intervalos. Seguir um intervalo com "/" especifica saltos do valor do número dentro do intervalo. Por exemplo, "0-23/2" pode ser usado no campo de horas para especificar a execução do comando a cada duas horas (a alternativa no padrão V7[4] é "0,2,4,6,8,10,12,14,16,18,20,22 "). Os passos também são permitidos após um asterisco, então, se você quer dizer "a cada duas horas", use apenas "*/2".

Os nomes também podem ser usados para os campos "mês" e "dia da semana". Use as primeiras três letras do dia ou mês em particular (em inglês e a caixa não importa). Não são permitidas faixas ou listas de nomes nestes campos.

O "sexto" campo (ou seja, o resto da linha) especifica o comando a ser executado. A parte do comando da linha toda, até uma nova linha ou o caractere porcento (%), será executada por /bin/sh ou pelo shell especificado na variável SHELL do arquivo crontab. Os sinais de porcentagem (%) no comando, a menos que 'escapados' com barra invertida (), serão alterados para caracteres de nova linha e todos os dados após o primeiro % serão enviados ao comando como entrada padrão. Não há como dividir uma única linha de comando em múltiplas linhas, como com o clássico "" de final de linha do shell.

Nota: O dia da execução de um comando pode ser especificado por dois campos - 'dia do mês' e 'dia da semana'. Se ambos os campos estiverem especificados restritivamente (ou seja, não forem *), o comando será executado quando qualquer dos dois campos corresponder ao momento atual. Por exemplo, "30 4 1,15 * 5" faria com que um comando fosse executado às 4:30 da manhã no dia 1 e 15 de cada mês, mais todas as sextas-feiras.

Em vez dos cinco primeiros campos, uma das oito sequências de caractere especiais pode aparecer:

Tabela 1: Sequências especiais de momentos

Cadeia		Significado
@reboot		Executar uma vez, na inicialização.
@yearly		Executar uma vez por ano, "0 0 1 1 *".
@annually	(O mesmo que @yearly)
@monthly	Executar uma vez por mês, "0 0 1 * *".
@weekly		Executar uma vez por semana, "0 0 * * 0".
@daily		Executar uma vez por dia, "0 0 * * *".
@midnight	(Idêntico a @daily)
@hourly		Executar uma vez por hora, "0 * * * *".

Fonte: página do comando man 5 crontab do Ubuntu Linux 16.04 LTS, 2017.

Um exemplo de formato crontab com campos comentados é o seguinte:

#	Minuto	Hora	Dia do Mês	Mês	Dia da Semana	Comando
#	(0-59)	(0-23)	(1-31)	(1-12 ou jan-dez)	(0-6 ou Sun-Sat)	
	0	2	12	*	*	/usr/bin/find

Esta linha executa o comando "find" às 2h do dia 12 de cada mês.

[4] V7, Versão7 ou UNIX Versão 7. Referência a versão do UNIX lançada em 1979, que é a última versão do UNIX sob responsabilidade do Bell Laboratories. Em 1980 o UNIX foi vendido para a AT&T.

Página anterior     Próxima página

Páginas do artigo
   1. O cron
   2. O comando crontab
   3. Formato de linha da tabela cron (ou crontab)
   4. Exemplos
   5. Pegadinhas, ou "coisas para verificar" quando em apuros
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Configuração de servidor DNS no Linux

Autenticando e protegendo diretórios no Apache

Redimencionando SWAP sem reinstalar o Linux

Apache2, PHP5, MySQL5 e PhpMyAdmin com certificação SSL no Debian Etch

AntiX: um Sistema Operacional para computadores antigos

  
Comentários
[1] Comentário enviado por demoncyber em 24/08/2017 - 10:33h

Olá,

Parabéns pelo texto, bem redigido e completo sobre o tema, digo isto com referência de caso por ter lido vários livros sobre GNU/Linux, e a questão das muitas referências só elucidam a qualidade do trabalho. Passei o texto para alguns colegas que estão iniciando e não conhecem com profundidade no assunto.

Espero que venham novos bons textos.

Abraços

[2] Comentário enviado por cleysinhonv em 05/09/2017 - 10:53h

Um artigo bem escrito e muito útil. Tive muito sucesso usando cron em sistemas de data warehouse. Uma ferramenta simples e poderosa.

[3] Comentário enviado por QAPLA em 22/09/2017 - 11:21h


[1] Comentário enviado por demoncyber em 24/08/2017 - 10:33h

Olá,

Parabéns pelo texto, bem redigido e completo sobre o tema, digo isto com referência de caso por ter lido vários livros sobre GNU/Linux, e a questão das muitas referências só elucidam a qualidade do trabalho. Passei o texto para alguns colegas que estão iniciando e não conhecem com profundidade no assunto.

Espero que venham novos bons textos.

Abraços


Obrigado pelas palavras, são grande incentivo para continuar e saber a direção para caminhar. Espero conseguir contribuir muito mais em breve.

Forte abraço

[4] Comentário enviado por QAPLA em 22/09/2017 - 11:25h


[2] Comentário enviado por cleysinhonv em 05/09/2017 - 10:53h

Um artigo bem escrito e muito útil. Tive muito sucesso usando cron em sistemas de data warehouse. Uma ferramenta simples e poderosa.


Obrigado, realmente CRON vem sendo o esteio de nossa produção em escala na empresa.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts