Como Definir Variáveis de Ambiente para Jobs do Crontab?

Publicado 8 de setembro de 2024

Problema: Definindo Variáveis de Ambiente em Tarefas do Crontab

As tarefas do crontab frequentemente precisam acessar variáveis de ambiente, mas essas variáveis não estão automaticamente disponíveis no ambiente do cron. Isso pode causar comportamentos inesperados ou erros ao executar tarefas agendadas que dependem de configurações específicas de ambiente.

Soluções para Definir Variáveis de Ambiente no Crontab

Método 1: Definindo Variáveis Diretamente no Crontab

Você pode definir variáveis de ambiente no arquivo crontab. Para fazer isso:

  1. Abra o arquivo crontab para edição:

    crontab -e
  2. Adicione suas variáveis de ambiente no topo do arquivo:

    LANG=pt_BR.UTF-8
    PATH=/usr/local/bin:/usr/bin:/bin
  3. Adicione suas entradas de tarefas cron:

    0 * * * * /caminho/para/seu/script.sh

Este método funciona para variáveis específicas das suas tarefas cron.

Dica: Verificar Variáveis de Ambiente

Após definir variáveis de ambiente no crontab, você pode verificá-las adicionando uma tarefa de teste:

* * * * * env > /tmp/cron-env.txt

Isso escreverá todas as variáveis de ambiente em um arquivo, permitindo que você verifique se elas foram definidas corretamente.

Método 2: Carregando Arquivos de Ambiente nos Comandos do Crontab

Você pode carregar seus arquivos de ambiente dentro das entradas do crontab:

  1. Edite seu arquivo crontab:

    crontab -e
  2. Adicione um comando para carregar seu arquivo de ambiente antes de executar seu script:

    0 * * * * . $HOME/.bash_profile; /caminho/para/seu/script.sh

Isso carrega todas as variáveis do seu .bash_profile (ou .bashrc) para cada tarefa cron.

Método 3: Criando um Script Wrapper

Um script wrapper pode configurar o ambiente antes de executar seu script principal:

  1. Crie um script wrapper, por exemplo, 'wrapper.sh':

    #!/bin/bash
    source $HOME/.bash_profile
    /caminho/para/seu/script_principal.sh
  2. Torne o script wrapper executável:

    chmod +x wrapper.sh
  3. No seu crontab, chame o script wrapper:

    0 * * * * /caminho/para/wrapper.sh

Este método é útil quando você precisa configurar um ambiente complexo para suas tarefas cron.

Exemplo: Registrando no Script Wrapper

Você pode adicionar logs ao seu script wrapper para ajudar na depuração:

#!/bin/bash
echo "Iniciando tarefa em $(date)" >> /var/log/cron_jobs.log
source $HOME/.bash_profile
/caminho/para/seu/script_principal.sh
echo "Tarefa concluída em $(date)" >> /var/log/cron_jobs.log

Isso registrará os horários de início e término de cada execução da tarefa.