Variáveis de ambiente não são passadas para sub-scripts durante a execução no crontab

1

Eu estava tentando executar um dos scripts (por exemplo, wrapper.sh ) que internamente executa outros scripts usando o crontab. Funciona bem sem problemas.

Quando eu criei um arquivo de ambiente (que armazena as senhas-DB e caminhos) e tentando executar o script principal ( wrapper.sh ), a entrada cron não funciona nos scripts que são chamados internamente no wrapper.

NOTA: Eu tentei mudar PATH, adicionado a localização do arquivo env antes do script no cron, mas ainda não funcionou:

9 9 * * * . /$SOMEPATH/some.env; /$SOMEPATH/wrapper.sh

O script de ambiente e wrapper.sh estão no mesmo caminho. quando o cron executa, ele passa as variáveis env para o wrapper, mas não para os scripts que são chamados internamente no wrapper. Também é recebido um email em /var/mail/$user dizendo que o arquivo env é "Nenhum arquivo ou diretório". Já passei por muitas postagens, mas não consegui descobrir a resolução.

    
por user265560 12.12.2017 / 21:07

1 resposta

3

$SOMEPATH não está definido em cron , por isso a linha crontab que tenta obter /$SOMEPATH/some.env falhará. (A menos que //some.env exista.)

Para depurar problemas relacionados com cron , esteja ciente de que ele grava as mensagens stderr - incluindo as próprias - na caixa de correio do usuário local. Se você não tiver um cliente de e-mail instalado ( mail ou mailx ), poderá usar algo assim para ler estas mensagens:

less /var/mail/$USER

Ou se você quiser ser realmente genérico

"${PAGER:-less}" "${MAIL:-/var/mail/${USER:-${LOGIN:-$(whoami)}}}"
    
por 12.12.2017 / 22:02