Agendar Tarefas no Linux

Agendar Tarefas no Linux é simples e fundamental para um administrador de sistemas Linux ou Unix.

O cron é daemon responsável por agendar tarefas no Linux, basicamente executar comandos programados.

Sabe quando precisa dar uma geral na sua área de trabalho, pois vive jogando arquivos nela.

Nesses casos seria bom ter um programa que fizesse a limpeza de forma automática.

O que é mencionei é um exemplo que acontece bastante, ou quando você precisa guardar arquivos de música na pasta Music, vídeos na pasta Movies e assim por diante.

Você poderia agendar tarefas para aguardar tais arquivos no local correto, tipo todos os dias uma tarefa que move arquivos de vídeos da pasta Downloads para a pasta Movies.

Os exemplos são básicos para passar a ideia.

Agora vamos voltar ao cron.

O vídeo abaixo está apenas com áudio de fundo, mas logo vou adicionar a explicação em áudio.

Agendar Tarefas no Linux

cron é o daemon responsável por executar comandos agendados e recorrentes (todo dia, toda semana, etc.); 

Em um sistema Unix e Linux, muitas tarefas são agendadas para execução regular:

  • Rotacionando os logs;
  • Cópias de segurança;
  • Rodar scripts de manutenção;

 Por padrão, todos os usuários podem agendar a execução de tarefas.

Cada usuário tem, assim, seu próprio crontab no qual pode gravar comandos agendados.

Ele pode ser editado rodando crontab -e  (seu conteúdo é armazenado no arquivo /var/spool/cron/crontabs/usuário).

O usuário root tem seu pŕoprio crontab, mas também pode usar o arquivo /etc/crontab, ou escrever arquivos crontab adicionais no diretório /etc/cron.d.

Essas duas últimas soluções tem a vantagem de ser capaz de especificar a identidade do usuário a usar quando o comando for executado.

O pacote cron incluí por padrão alguns comandos que executam:

  • programas no diretório /etc/cron.hourly/ uma vez por hora;
  • programas no /etc/cron.daily/ uma vez por dia;
  • programas no /etc/cron.weekly/ uma vez por semana;
  • programas no /etc/cron.monthly/ uma vez por mês.

Formato do Arquivo crontab

Cada significante linha de um crontab descreve um comando agendadocom os seguintes seis (ou sete) campos:

  • O valor para o minuto (números de 0 à 59);
  • O valor para a hora (de 0 à 23);
  • O valor para o dia do mês (de 1 à 31);
  • O valor para o mês (de 1 à 12);
  • O valor para o dia da semana (a partir de 0 até 7, 1 correspondendo a Segunda, Domingo sendo representado tanto por 0 quanto por 7; ainda é possível usar as três primeiras letras do nome do dia da semana em Inglês, como SunMon, etc.);
  • O nome de usuário sob cuja identidade o comando deve ser executado (no arquivo /etc/crontab e nos fragmentos localizados em /etc/cron.d/, mas não nos arquivos crontab do próprio usuário);
  • O comando a ser executado (quando as condições definidas nas primeiras cinco colunas estão satisfeitas).

Cada valor pode ser expresso na forma de uma lista de valores possíveis (separados por vírgulas).

A sintaxe a-b descreve o intervalo de todos os valores entre a e b.

A sintaxe a-b/c descreve o intervalo com um incremento de c (exemplo: 0-10/2 significa 0,2,4,6,8,10).

Um asterisco * é um coringa, representando todos os valores possíveis.

A única coisa que você precisa guardar em mente é a sequencia de passos:

#min hour day mon dow  command
# Verifica aos domingos e removendo arquivos no /tmp com mais de 30 dias sem acesso/alteração
30 23 * * 0 find /tmp/ -atime +30 -delete

Ou você pode especificar scripts:

#min hour day mon dow  Path/script.sh
00 6 * * 1 /caminho/para/script/status.sh 
00 12 5 * * /caminho/para/script/temp.sh 
30 23 * * * /caminho/para/script/backup.sh

Importante e Fundamental

Saber usar o cron é um fundamento para todo Analista ou Administrador de Sistemas.

Por exemplo:

Você pode restringir o acesso ao cron criando um arquivo explícito para autorização (whitelist) em /etc/cron.allow, no qual você indica apenas usuários com autorização para agendar comandos. Todos os outros serão automaticamente privados desse recurso.

Reciprocamente, para bloquear apenas um ou dois encrenceiros, você pode botar seus nomes de usuário em um arquivo explícito para proibição (blacklist), /etc/cron.deny.

Confira nosso curso de Analista de Suporte Linux, é bem mais que um curso e sim uma união de profissionais Linux.

CategoriesSysadmin

Leave a Reply

Your email address will not be published. Required fields are marked *

Begin typing your search above and press return to search. Press Esc to cancel.