Precisamos ter / usr / local / bin no caminho do cron para todos os usuários. Existe uma maneira de configurá-lo em todo o sistema, sem a necessidade de editar o crontab de cada usuário individual?
Tentamos adicionar PATH ao / etc / crontab:
# grep PATH /etc/crontab
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Mas quando os usuários têm isso em seu crontab:
$ crontab -l | grep PATH
* * * * * echo $PATH > /tmp/current_cron_path
... revela que o caminho deles ainda está definido como padrão:
$ cat /tmp/current_cron_path
/usr/bin:/bin
echo
no seu cron é possivelmente não confiável .Respostas:
Você pode configurar seu PATH no arquivo de configuração crontab, como mostrado no primeiro código, exceto lá . Primeiro especifique as variáveis env, depois especifique os trabalhos.
UPD: Devido ao fato de o link estar quebrado, aqui está um trecho:
fonte
sudo crontab -e
) do root ( )Definir a variável PATH deve funcionar no Ubuntu, como você diz que não está funcionando?
Consulte # 14: Linux Crontab: 15 exemplos impressionantes de tarefas do Cron
fonte
Também não consegui encontrar uma solução para isso. O mais próximo que cheguei de uma solução decente é o seguinte (extraído de https://raymii.org/s/tutorials/Better_cron_env_and_shell_control_with_the_SHELL_variale.html ).
SHELL=/path/to/setup/cron.bash
Por exemplo:
Desvantagem: isso exige que você especifique
SHELL=...
no topo de cada cronjob. De cabeça para baixo: você usará variáveis de ambiente regulares e não precisará se preocupar em manter as variáveis consistentes entre o cron e outrosfonte
Se você é capaz de ser root, pode tentar editar
/etc/init.d/cron
e alterar o CAMINHO lá? Eu não testei isso, mas seria interessante verificar.fonte