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