Crontab - Guia prático, agendamento de tarefas no Linux.

Anderson Irias - 30/01/2021

O cron é um utilitário para execução de tarefas agendadas baseado em tempo. Com ele é possível agendar uma tarefa, para que ela seja automaticamente executada. Já o Crontab, nos permite configurar este agendamento de tarefas, para que assim possamos determinar quando e com qual recorrência cada tarefa será executada pelo cron. Neste artigo vamos ver de forma prática como utilizar o Crontab.

O cron já vem normalmente instalado por padrão em diversas distribuições Linux. Mas caso seja necessário, ele pode ser instalado no Linux Ubuntu com o comando:

apt-get install cron

Entendendo o arquivo Crontab

Com seu editor de preferência abra o arquivo /etc/crontab.

sudo vim /etc/crontab

Estou abrindo o arquivo com o sudo antes do comando, pois o mesmo precisa de permissão de administrador para ser alterado. O Crontab permite configurar uma tabela diferente para cada usuário, mas nesse artigo vou apresentar somente como editar o arquivo geral.

Este é o arquivo /etc/crontab padrão. Ele é dividido em colunas onde realizamos as configurações.

Colunas arquivos crontab

Com estas 7 colunas, podemos realizar diferentes configurações de recorrência. O crontab é bem simples de se configurar, vou apresentar 5 casos de configuração, para demonstrar seu funcionamento.

Executando um comando de 5 em 5 minutos todos os dias.

*/5 *   * * *   root    echo "Teste crontab" > /home/anderson/teste_crontab.txt

A linha acima roda o comando echo que escreve a frase: "Teste crontab", no arquivo: “/home/anderson/teste_crontab.txt” de 5 em 5 minutos.

Executando um comando ao 12:00 todos os dias.

00 12   * * *   root    /home/anderson/script_teste.sh

Agora estamos executando o script: script_teste.sh todos os dias ao meio dia.

Executando um comando segunda feira às 8:00 todas as semanas.

00 8    * * 1   root    echo "Boa Semana" > /home/anderson/teste_crontab.txt

Novamente utilizamos o comando echo para escrever a frase: “Boa Semana”, toda segunda feira no arquivo: “/home/anderson/teste_crontab.txt”.

Executando um comando todo dia 5 às 16:00 todos os meses.

00 16   5 * *   root    terminator

Estamos agora abrindo o programa terminator às 16:00 todo dia 5 do mês. A linha acima irá abrir uma nova janela do software terminator. O terminator é um terminal shell do Linux, pode ser utilizado qualquer tipo de programa ou comando executável na instrução crontab.

Executando um comando todo dia 24 de dezembro às 00:00 em todos os anos.

00 00   24 12 * root    /usr/bin/docker exec feliz_natal

Por fim, temos o exemplo de como executar serviços que rodam com o Docker no crontab. O comando acima executa o container Docker “feliz_natal”, todo dia 24 de dezembro.

Conclusão

Após inserir todas as configurações, nosso arquivo crontab ficará do seguinte modo:

# /etc/crontab: system-wide crontab

Unlike any other crontab you don't have to run the `crontab'

command to install the new version when you edit this file

and files in /etc/cron.d. These files also have username fields,

that none of the other crontabs do.

SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

m h dom mon dow user command

17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

*/5 * * * * root echo "Teste crontab" > /home/anderson/teste_crontab.txt 00 12 * * * root /home/anderson/script_teste.sh 00 8 * * 1 root echo "Boa Semana" > /home/anderson/teste_crontab.txt 00 16 5 * * root terminator 00 00 24 12 * root /usr/bin/docker exec feliz_natal

Agora, basta salvar o arquivo e as tarefas já vão começar a ser executadas. Para vermos o log de execução o crontab utilize o comando:

sudo grep CRON /var/log/syslog