1 votos

Ejecutar script con crontab no funciona

Sé que launchd es el camino a seguir, pero realmente necesitaría usar cron en esta situación.

Estoy tratando de ejecutar el siguiente comando a través de cron:

rclone copy /Users/x123/Downloads/torrents mega:torrents -q && rm -f /Users/x123/Downloads/torrents/*.*

Esto funciona bien en el terminal, sin embargo cuando voy crontab -e y añadirlo, no se ejecuta.

También he probado a añadir el comando a un .sh script, hacerlo ejecutable y ejecutarlo con cron, tampoco sirve.

Sinceramente, estoy perdido. He intentado touch de un archivo, y funciona. Por ejemplo:

*/5 * * * * touch ~/Downloads/torrents/Test1.txt

Sin embargo, crea el archivo sin problemas:

*/5 * * * * rclone copy /Users/x123/Downloads/torrents mega:torrents -q && rm -f /Users/x123/Downloads/torrents/*.*

No lo hace, tampoco:

*/5 * * * * cd /Users/x123/ && ./script.sh (que el script contiene el comando)

Merece la pena destacarlo: cron, crontab tienen acceso al disco completo.

¿Debo llevar esta investigación a rclone ¿Foro? Cualquier ayuda para entender lo que está pasando sería muy apreciada.

Así que aprendí algunas cosas:

  1. Cuando se trabaja con cron y parece que no funciona, compruebe su mail en la bandeja de entrada, ¡ayuda!

  2. Siempre utilice rutas completas cuando se trata de cron

  3. Si usted instruye cron un comando, y luego decide trasladar todo esto a un script, comprobar y volver a comprobar su script. ¡En mi caso, estaba tan metido en las rutas completas, que me olvidé de los verbos de comando!

  4. Gracias a todos por el continuo y gran apoyo. ¡Es extremadamente valioso!

3voto

Steve Evans Puntos 155

Caminos absolutos

Utilice una ruta absoluta (completa) para rclone en el comando.

cron ejecuta los comandos en un entorno más sencillo que cuando el mismo comando se ejecuta desde una sesión de terminal interactiva. Esto significa que la mayoría de los ejecutables no se pueden encontrar sin que se proporcione su ubicación completa.

Para encontrar el camino a rclone en su Mac, utilice el comando

which rclone

La salida será la ruta a utilizar. Si ha instalado rclone utilizando el Homebrew gestor de paquetes, la ruta será probablemente:

/usr/local/bin/rclone

Ver también cron y "comando no encontrado" .

Pruebe el rclone sin el comando rm comando:

/usr/local/bin/rclone /Users/x123/Downloads/torrents mega:torrents -q

Globos

El * pasado a rm no se expandirá; no hay ningún shell involucrado para hacer la expansión. Un shell script - con una ruta absoluta - es probablemente más fácil de hacer funcionar.

Shell script

Considere la posibilidad de escribir los comandos como un shell script y tenga cron llamar al script. Asegúrese de utilizar rutas absolutas para cada ejecutable del shell script y de pasar la ruta absoluta al shell script en cron :

*/5 * * * * /bin/bash /Users/x123/Documents/myscript.sh

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X