
paulo1205
(usa Ubuntu)
Enviado em 12/02/2020 - 01:39h
Pode ser por causa do que o msoliver falou, mas pode ser também por conta de alguma discrepância em valores de variáveis de ambiente entre o momento do login interativo (especialmente se for via SSH ou outra forma de acesso remoto) e o momento em que o
crontab é processado pelo
cron.
Em particular, algumas fontes muito comuns de problemas por discrepância de ambiente são as variáveis:
•
PATH, que controla diretórios em que os executáveis são buscados, caso você não especifique seus caminhos completos,
•
USER e
HOME, que informam quem está logado no terminal e qual o caminho do diretório de dados padrão (quando você usa
su ou
sudo, dependendo do modo como os invoca, os valores dessas variáveis podem permanecer aqueles de quem efetuou login, em vez de ser trocados para os do usuário alvo da escalação de privilégio ou troca de credenciais),
•
LANG,
LC_ALL,
LC_MESSAGES e outras da família de
LC_…, que controlam configurações regionais e de idioma, e que podem afetar a saída produzida pelos comandos executados, o que é particularmente importante se você capturar e comparar tais saídas com valores fixos.
Para evitar problemas com variáveis de ambiente, é interessante que você faça com que seu
script tenha todas as variáveis que podem afetar a execução dos comandos com valores conhecidos no momento da execução, e a melhor forma de garantir isso é atribuir valores a tais variáveis, em lugar de os receber (ou deixar de receber) a partir do ambiente de execução.
Na minha experiência pessoal e em fóruns como este, o minimamente recomendado é que você fixe, no início do
script, pelo menos os valores de
PATH (que deve ser o mais minimalista possível, a fim de aumentar a segurança e o desempenho) e de
LC_ALL (que deve preferir a
locale mais universal possível, que quase sempre é a
locale "C").
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)