
En mi Debian
servidor lo uso crontab
para programar un python
código. El problema es: cuando agrego una línea como esta:
6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt
No es de extrañar que el resultado indique que python
no se encuentra el comando.
Por supuesto, puedo agregar una ruta completa a la entrada de crontab como /opt/python/3.9.2/bin/python
, pero no me gusta esta idea porque parece confusa y este problema también persiste cuando necesito, por ejemplo, hacer algo como os.system("python task.py")
en daily_task.py
.
Intenté agregar una línea como esta a /etc/environment
:
export PATH="$PATH:/opt/python/3.9.2/bin/"
Después de reiniciar, de hecho podría usarlo solo python
en la ventana de mi terminal, pero crontab
todavía $PATH
solo consta de /usr/bin
.
¿Dónde debería poner este código para cambiarlo $PATH
en todas partes, incluido crontab
(sin alterar el archivo crontab)?
Respuesta1
Si observa el contenido de /bin
, verá muchos enlaces simbólicos porque muchos programas no se colocan directamente en los directorios bin. Puedes hacer lo mismo:
sudo ln -s /opt/python/3.9.2/bin/python /usr/bin
De esta manera, no necesita modificar su crontab
.
Respuesta2
Puede agregar variables de entorno en su archivo crontab de esta manera:
PATH=/usr/bin:/whatever/bin
HOME=/home/myuser
6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt