Escolar Documentos
Profissional Documentos
Cultura Documentos
VITOR BRITTO
DESENVOLVEDOR WEB
TEMA:
Saudações!
Para os usuários UNIX, segue uma dica interessante para agendar tarefas com o comando crontab.
Este cara, permite que você realize o agendamento de tarefas em determinados períodos.
CENÁRIO
Digamos que você possua um script para realizar um procedimento em um determinado intervalo de
tempo. Seja para o backup de arquivos mais obsoletos em projetos que você realizou há algum tempo
e, por algum motivo, não optou pelo seu versionamento ou um simples backup de um banco de
dados.
No que se refere a backups, existem duas formas para transitar estes dados:
Além disso, podemos utilizar os comandos scp , rsync ou cp para realizar a transferência destes
arquivos.
ENTENDENDO O CRONTAB
O formato para o crontab é o seguinte: Campo Função Valores
1 Minuto 0-59
2 Hora 0-23
4 Mês 1-12
Perceba que, estamos programando a execução de 3 scripts em Shell nas datas selecionadas e os
mesmos farão o seguinte:
status.sh : realizar o procedimento contido neste script toda segunda, às 6:00 da manhã.
temp.sh : realizar o procedimento contido neste script no dia 5 de cada mês, às 12:00.
backup.sh : realizar o procedimento contido neste script todos os dias, às 23:30 da noite.
Você ainda pode adicionar um 7 (sétimo) campo, onde o sexto campo será substituído pelo nome do
usuário no sistema e o sétimo campo adicionado com o programa a ser executado. Veja o exemplo a
seguir:
# Execute esta tarefa a cada três horas, no dia 1 (um) de cada mês com o usuário roo
t.
00 */3 1 * * root /caminho/para/script/security.sh
www.vitorbritto.com.br/blog/agendando-tarefas-com-crontab/ 2/8
08/08/2019 Agendando tarefas com o Crontab
Perceba que estamos utilizando um novo método para de nir o período desta tarefa, o */3 . Este
trecho faz com que a tarefa seja executa em intervalos de 3 horas. Você poderia ainda de nir os
horários que esta tarefa seria executada, utilizando uma , (vírgula) para cada horário. Por exemplo:
00 3,9,15,21 1 * * root /caminho/para/script/security.sh .
IMPORTANTE
Os scripts a serem executados no exemplo acima pelo crontab, precisam estar de nidos como
executáveis no seu Shell. Para isso, certi que-se de que o comando chmod +x
/caminho/para/script/seuscript.sh foi executado previamente. Do contrário, utilize o operador
&& para compactar uma instrução no momento da execução do script. Como faremos isso?
# Tarefas:
00 6 * * 1 /caminho/para/script && bash status.sh
00 12 5 * * /caminho/para/script && bash temp.sh
30 23 * * * /caminho/para/script && bash backup.sh
Notas:
Usar bash ou sh para executar o seu script, vai depender do seu Shell.
Não esqueça que para tornar um script executável, é preciso de nir um shebang.
crontab -e: editar o arquivo atual ou criar um, caso não exista
crontab -l: listar suas tarefas programadas
crontab -r: remover uma tarefa programada
INDO ALÉM
Existem algumas maneiras para facilitar ainda mais o uso do crontab.
PALAVRAS ESPECIAIS
O crontab fornece alguns atalhos para de nirmos nossas tarefas, veja abaixo: Atalho Signi cado
www.vitorbritto.com.br/blog/agendando-tarefas-com-crontab/ 3/8
08/08/2019 Agendando tarefas com o Crontab
Importante: sempre aponte para os arquivos utilizando caminhos absolutos, pois o crontab não lê
as variáveis de ambiente do Shell.
Nota:
O processo vai substituir qualquer tarefa anterior com o conteúdo que estiver neste arquivo, sem
qualquer aviso.
Fica a seu critério como nomear e categorizar as suas tarefas.
Até a próxima! =]
www.vitorbritto.com.br/blog/agendando-tarefas-com-crontab/ 4/8
08/08/2019 Agendando tarefas com o Crontab
VITOR BRITTO
Full Stack Web Developer, extremamente apaixonado pelo seu trabalho (e Unix). Descobriu o mundo
dos códigos há quase duas decádas e mantém a mesma paixão desde o primeiro dia dessa
descoberta. Trabalha como freelancer full time há quase 4 anos desenvolvendo projetos voltados
para a web. Também direciona boa parte do seu tempo para pesquisas, desenvolvimento de projetos
open-source e escrever os artigos aqui publicados.
ASSINAR NEWSLETTER
Participe da discussão...
Nome
Gostaria que minha rotina fosse executada um domingo sim e outro não, tem idéia de como
posso fazer essa rotina? tentei colocar no crontab "0/2" porém o mesmo não permite essa
configuração.
△ ▽ • Responder • Compartilhar ›
www.vitorbritto.com.br/blog/agendando-tarefas-com-crontab/ 6/8
08/08/2019 Agendando tarefas com o Crontab
Estou tentando rodar uma tarefa na primeira segunda-feira de cada mês, imaginei o
seguinte agendamento: 55 8 1-7 * 1, porém ele não funciona. Poderia me ajudar, onde estou
errando?
△ ▽ • Responder • Compartilhar ›
Do jeito que está sue código vc está falando para ele ser executado as 8:55 do dia 1
ao 7 de todos meses e só na segunda-feira, portanto creio eu que irá executar
somente uma vez. tente a configuração acima que lhe passei
△ ▽ • Responder • Compartilhar ›
Neste caso o comando vai procurar no diretorio arquivos que existam a mais de 10
dias e executar o rm f
www.vitorbritto.com.br/blog/agendando-tarefas-com-crontab/ 7/8
08/08/2019 Agendando tarefas com o Crontab
dias e executar o rm -f.
www.vitorbritto.com.br/blog/agendando-tarefas-com-crontab/ 8/8