Linux na Web

Como agendar tarefas no Linux com o Crontab

O crontab, é um programa que agenda tarefas nos Sistemas Operacionais Linux e é bastante útil para automatizar a execução de certos processos no sistema, você edita o arquivo onde precisa ser atendido alguns parâmetros para executar um comando ou script. Onde é executado no sistema o (daemon) serviço cron, que é encarregado de verificar a data e hora e se existe algum programa a ser executado, caso exista ele rodará na data e hora solicitada, neste post irei ensinar a entender os parâmetros e os comandos que precisam ser executados. Primeiro iremos conhecer o arquivo do crontab.

Na imagem abaixo explico para que serve cada campo.

Quanto à edição do arquivo /etc/crontab, é importante considerar a utilização de alguns caracteres, os quais facilitarão o trabalho de agendamento:

• É necessário incluir uma linha em branco no final do arquivo para que o último comando seja executado;
• No campo que se refere aos dias da semana, o domingo pode ser representado pelo número 0 ou 7;
• No campo que se refere aos dias da semana, funciona também as três primeiras letras (em inglês) do dia da semana (sun,mon,tue,wed,thu,fri,sat);
• Os campos devem ser separados por um ou mais espaços ou tabulações;
• O asterisco (*) serve para especificar todo o intervalo disponível nos campos de data e hora;
• O hífen (-) é utilizado para especificar períodos de execução, incluindo o valor inicial e final;
• A vírgula (,) pode ser usada para especificar uma lista de valores;
• A barra (/) serve para especificar passos, ou seja, para inserir mais serviços que serão executados de acordo com o agendamento.

As tarefas que o usuário pretende agendar devem ser documentadas nas crontabs, que são tabelas verificadas a cada minuto pelo crond, com data e hora de execução indicadas para cada tarefa. As crontabs podem ser de usuário ou do sistema. O primeiro tipo fica armazenado no diretório /var/spool/cron/crontabs/<nomedousuario> e a crontab do sistema fica no /etc/crontab. Além disso, elas se diferem pelo fato de as crontabs de usuário trazerem a especificação de qual usuário irá executar a tarefa agendada. Para tarefas cuja hora exata não precise ser especificada, elas podem ser colocadas nos diretórios:

Para o usuário comum executar tarefas através de comandos cron ele precisa estar listado no arquivo: /etc/cron.allow, basta colocar o nome do usuário, ou para impedir que o usuário execute tarefas, coloque o usuário no arquivo /etc/cron.deny. Em seguida iremos conhecer os parâmetros do comando crontab :

Abaixo tem alguns exemplos úteis de crontab

Agora você irá compreender melhor o que falamos acima.

Agendar um cron para rodar todos dias as 2 horas da manhã.

Agendar para executar uma tarefa duas vezes no dia.

Agendar um cron para executar uma tarefa em cada minuto.

Executar um cron para rodar todos os sábados às 8 horas da manhã.

 

Agendar um cron para rodar a cada 20 minutos.

Agendar um cron para rodar a cada 5 horas.

Agendar um cron para rodar de 3 em 3 meses às 8:00 da manhã.

Inclusive esta Crontab no post: Let’s Encrypt.

Agendar um cron para rodar sábado e domingo às 8 horas da manhã.

Este é um exemplo de como rodar em dias da semana especifico.

Agendar um cron para rodar no primeiro domingo de cada mês.

Para agendar um script para executar um script no primeiro domingo, não é possível por parâmetro de tempo, mas podemos usar a condição nos campos de comando para fazê-lo.

Rodar várias tarefas em um único cron.

Para rodar vários scripts, separe utilizando ponto e virgula(;).

Programar tarefas utilizando o parâmetro @[data].

Ficaria da seguinte forma:

Fazer backup da cron.

Restaurar o backup da cron.

Espero ter ajudado a compreender e entender como funciona o Crontab.

Referências:

Tecadmin.net

Tags:,
Sobre: 
SysOps - Analista de Redes Sênior, entusiasta por Linux, fundou o site Linux na Web no intuito de ajudar a comunidade Linux com artigos que possa ajudar no dia-dia do profissional de TI, trabalho em um ambiente com práticas DevOps para automatizar e agilizar nas tarefas diárias. - Amo o que eu faço... Gosto de tudo que é relacionado a Tecnologia, principalmente se for Open Source hehe e Amo a minha Família!
%d blogueiros gostam disto: