
No meu Debian
servidor eu uso crontab
para agendar um python
código. O problema é: quando adiciono uma linha como esta:
6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt
Não é de surpreender que a saída indique que python
o comando não foi encontrado.
É claro que posso simplesmente adicionar um caminho completo para a entrada do crontab como /opt/python/3.9.2/bin/python
, mas não gosto dessa ideia porque parece confusa e esse problema também persiste quando preciso, por exemplo, fazer algo como os.system("python task.py")
em daily_task.py
.
Tentei adicionar a linha assim /etc/environment
:
export PATH="$PATH:/opt/python/3.9.2/bin/"
Após uma reinicialização, eu realmente poderia usar apenas python
na janela do meu terminal, mas crontab
ainda $PATH
consiste apenas em arquivos /usr/bin
.
Onde devo colocar esse código para alterar $PATH
em todos os lugares, inclusive crontab
(sem alterar o arquivo crontab)?
Responder1
Se você olhar o conteúdo de /bin
, verá muitos links simbólicos porque muitos programas não são colocados diretamente nos diretórios bin. Você pode fazer o mesmo:
sudo ln -s /opt/python/3.9.2/bin/python /usr/bin
Dessa forma, você não precisa modificar seu arquivo crontab
.
Responder2
Você pode adicionar variáveis de ambiente no próprio arquivo crontab assim:
PATH=/usr/bin:/whatever/bin
HOME=/home/myuser
6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt