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

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

  • 1° coluna –  Minutos (0 à 59).
  • 2° coluna – Horas (0 à 23).
  • 3° coluna – Dia do mês (1- 31).
  • 4° coluna – Mês (1 – 12).
  • 5° coluna – Dia da semana (0 – 7). No caso tanto o 0 quanto o 7 representam domingo.
  • 6° coluna – Usuário que executa o comando.
  • 7° coluna – Comando que será executado na tarefa.

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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *