Si bien son similares, un crontab de usuario (editado usando crontab -e) es diferente y mantiene una ruta separada del crontab del sistema (editado editando / etc / crontab).
El crontab del sistema tiene 7 campos, insertando un nombre de usuario antes del comando. El crontab del usuario, por otro lado, tiene solo 6 campos, que van directamente al comando inmediatamente después de los campos de tiempo.
Del mismo modo, la RUTA en el crontab del sistema normalmente incluye los directorios / sbin, mientras que la RUTA en el crontab del usuario no. Si desea establecer PATH para el crontab de usuario, debe definir la variable PATH en el crontab de usuario.
Una solución simple para agregar su ruta regular en los comandos de shell en cron es hacer que el cronjob obtenga su perfil ejecutando bash en un shell de inicio de sesión. por ejemplo en lugar de
* * * * * some command
En su lugar, puedes correr
* * * * * bash -lc some command
De esa manera, si su perfil establece la RUTA u otras variables de entorno en algo especial, también se incluye en su comando.
bash -lc
no ayuda. Estoy bien por ahora con la configuración de PATH manualmente, pero si instalo algunos scripts, quiero que sean reconocidos en cronjobs sin especificar rutas completas. Estoy seguro de que es posible de alguna manera, ybash -lc
está en camino a una solución :)Si necesita las RUTA predeterminadas de todo el sistema y otras variables ENV (que se definen en /etc/profile.d), simplemente coloque lo siguiente:
fuente
Es posible establecer la RUTA (u otros parámetros) en la línea cronjob o en una sola línea. Pero no puede utilizar la expansión de shell como
PATH=$PATH:/usr/local/bin
. Pero la tilde está permitida para los accesos directos del directorio de inicio.De los libros:
Ver
man 5 crontab
para más información.Entonces esto debería funcionar:
fuente
Tuve el mismo problema y encontré otra forma de ejecutar mi script en crontab. Creo que la forma más fácil de ejecutar su programa es crear un script que pueda cd en el directorio de su programa. Luego llame a su programa en ese script.
Este es un ejemplo de un script (nombre del script = launcher.sh):
luego, haga que su script sea ejecutable:
Y por último, agrega tu script a crontab
y agrega esta línea al final:
(Configuré el programa para que se ejecute en cada reinicio)
fuente