Entendendo o Cron e crontab do Linux

Crontab - Relatos TI - Linux

O CRON no Linux trata-se de uma ferramenta que permite programar a execução de comandos e processos de maneira repetitiva ou apenas em uma única vez, tem a mesma função do famoso Agendador de Tarefas do Windows.

O entendimento do CRON do Linux é bem simples, e vou demostrar abaixo como adequar os agendamentos para melhor atender seu negócio.

Como podem ver na imagem acima, ele é bem fácil só de olhar a imagem, sendo que toda vez que conter o símbolo “*” quer dizer que ele será executado todo minuto, hora, dia ou mês.

Não confundir o “Dia do mês” com “Dia de semana”, o mesmo são campos totalmente diferente e devem ser levados em consideração caso tenha uma tarefa para ser executado em um dia especifico.


Comandos do CronTab

Para acessar o cron do linux e editar, temos alguns comandos que podem ser usados e são universal para qualquer linux:

crontab -e: conforme já informado, serve para editar o arquivo atual do crontab e criar um, caso não exista;
crontab -l: este comando mostra o conteúdo atual do crontab;
crontab -r: remove o arquivo atual do crontab.


A sintaxe base seria essa:

Exemplo da Sintaxe:

[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]
Code language: JSON / JSON with Comments (json)

O preenchimento de cada campo é feito da seguinte maneira:

  • Minutos: informe números de 0 a 59;
  • Horas: informe números de 0 a 23;
  • Dias do mês: informe números de 0 a 31;
  • Mês: informe números de 1 a 12;
  • Dias da semana: informe números de 0 a 6;
  • Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se o arquivo do próprio usuário for usado);
  • Comando: a tarefa que deve ser executada.

** No lugar desses valores você também pode informar “*” (asterisco) para especificar uma execução todos os dias.


Alguns outros exemplos de CRON

15 23 1,25 * * echo "Não entre em pânico" > /home/relatosti/panico.txt
Code language: JavaScript (javascript)

Nesse exemplo a frase “Não entre em pânico” vai ser inserida no arquivo “panico.txt” que está no diretório “/home/relatosti” às 23:15 horas, nos dias 1 e 25 de todos os meses e em todos os dias da semana.

*/1 * * * * /usr/bin/php /var/www/html/front/cron.php &>/dev/null
Code language: JavaScript (javascript)

Nesse exemplo, a tarefa da vez é do GLPI, onde a cada 1 minuto vai ser chamado o php através do comando “/usr/bin/php” para ser executado o arquivo “/var/www/html/front/cron.php” e para não gerar log ou texto de saída usamos o “&>/dev/null

0 23 * * * sh /backup/backup_glpi.sh

Nesse exemplo, vai ser chamado todos os dias as 23 horas o script .sh “/backup/backup_glpi.sh” para ser criado um backup que estiver descrito no arquivo .sh

0 23 1,10,20,30 2,4,6,8,10,12 5 sh /backup/backup_glpi.sh

Nesse mesmo exemplo do backup, vai ser chamado todos os dias 1, 10, 20 ou 30 dos meses de Fev, Abril, Junho, Agosto, Outubro e Dezembro, se for uma (5) sexta-feira, as 23 horas o script .sh “/backup/backup_glpi.sh” para ser criado um backup que estiver descrito no arquivo .sh

Esse foi só um exemplo mais complexo do que é possível fazer, mas claro que se fosse em um ambiente de produção um script que rode diariamente ou semanalmente atenderia muito melhor #dicaadica


Os recursos do cron não se limitam aos mostrados anteriormente. Você pode ainda agendar tarefas muito mais complexas e poupar muito trabalho de ficar executando comandos manualmente e ter a chance de errar ou esquecer algo. A dica que posso dar para lidar com o crontab é testar.

Teste o comando antes de aplicar no crontab!

Pegue!, é Livre - Linux - Relatos TI
Subscribe
Notify of
guest

0 Comentários
Inline Feedbacks
View all comments