CRON e CRONTAB: um pouco de teoria, uso e exemplos

"Cron" ou "Cron job" são tarefas agendadas para execução automática. Veremos aqui como agendar tarefas no Linux e quais os recursos disponíveis no Linux para ajudar nesse objetivo.

[ Hits: 1.590 ]

Por: Francisco Jose Lopes em 11/08/2017 | Blog: http://www.qapla.com.br


O cron



O cron é um daemon[1] que executa comandos agendados contidos em arquivos como o /etc/crontab, ou arquivos armazenados em /var/spool/cron/crontabs/.

Este daemon é iniciado automaticamente de /etc/init.d ao entrar em níveis de execução de vários usuários. O cron procura sua área de spool para arquivos crontab (que são nomeados conforme as contas de usuários em /etc/passwd), crontabs, ou tabelas cron, encontradas são carregados na memória. Os arquivos crontab contidos neste diretório não devem ser editados/acessados diretamente, para isso, deve ser usado o comando crontab.

Como dito antes, o cron também lê /etc/crontab e os arquivos em /etc/cron.d, que têm um formato ligeiramente diferente, que inclui a indicação do usuário que executará o comando.

O cron 'acorda' a cada minuto, examinando todos os arquivos crontab armazenados, verificando cada comando para ver se algum deve ser executado neste momento. Ao executar comandos, a saída destes (stdout) é enviada para o proprietário do crontab (ou para o usuário nomeado na variável de ambiente MAILTO do crontab, caso exista). As cópias dos filhos do cron que executam esses processos recebem nomes em letras maiúsculas, como pode ser comprovado nas saídas de syslog e do comando ps.

Além disso, o cron verifica a cada minuto se o modtime (modification-time) do diretório spool (ou o modtime do arquivo /etc/crontab) foi alterado e, se houver acontecido isso, o cron examinará o modtime dos arquivos crontab e recarregará aqueles que foram alterados. Por isso o cron não precisa ser reiniciado a cada vez que um arquivo crontab é modificado. Observe que o comando crontab (secção 1 no man) atualiza o modtime do diretório spool sempre que ele muda algum crontab.

Considerações especiais são feitas quando o relógio do sistema é alterado num valor inferior a 3 horas, por exemplo, no início e no final do horário de verão. Se o tempo se deslocou para frente, os trabalhos que deveriam ter funcionado no horário saltado serão executados logo após a mudança. Por outro lado, se o relógio muda para trás, em um valor inferior a 3 horas, os trabalhos que caem no horário repetido não serão executados novamente.

Somente os trabalhos que executados em um determinado momento são afetados (portanto, não especificado com @hourly, nem com '*' (asterisco) nos campos de hora ou minuto). Os trabalhos com agendamento especificado com coringas (wild cards) são executados com base no novo horário, imediato.

As mudanças de relógio em valores superiores a 03 horas são consideradas como 'correções de horário' e o novo horário é assumido imediatamente.

No Debian e no Red Hat, cron trata os arquivos em /etc/cron.d como extensões do arquivo /etc/crontab (eles seguem o formato especial deste arquivo, ou seja, eles incluem o campo de usuário de execução). O propósito desse recurso é permitir que os pacotes que exigem um controle mais fino de seu agendamento, do que os dos diretórios /etc/cron.{daily, weekly, monthly} adicionem um arquivo crontab a /etc/cron.d.

Esses arquivos devem ser nomeados com a identificação do pacote que os inclui. Os arquivos devem estar em conformidade com a mesma convenção de nomenclatura usada pelas partes executadas: elas devem consistir apenas de letras maiúsculas e minúsculas, dígitos, sublinhados e hifens. Como /etc/crontab, os arquivos no diretório /etc/cron.d são monitorados em relação a alterações.

Deve-se usar nomes de caminho absolutos para comandos como /bin/ls, para garantir que seja chamado o comando correto.

[1] Em sistemas operacionais multitarefa, um daemon é um programa de computador que executa como um processo em segundo plano, em vez de estar sob o controle direto de um usuário interativo. Tradicionalmente, o nome de processo de um daemon termina com a letra d, para deixar claro que o processo é, de fato, um daemon. No universo Microsoft, um daemon é conhecido pela denominação serviço.

    Próxima página

Páginas do artigo
   1. O cron
   2. O comando crontab
   3. Formato de linha da tabela cron (ou crontab)
   4. Exemplos
   5. Pegadinhas, ou "coisas para verificar" quando em apuros
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Restrição de acesso a diretórios pelo Apache

Como configurar um servidor de FTP de forma simples e com host virtual

Configuração da interface KDE

Entendendo TCP/IP (parte 2) - Endereços IP

Debian Squeeze - Instalação e configuração no HP G42-371BR

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts