8 votos

los cronjobs no se ejecutan

Recientemente he cambiado de Ubuntu a MacOS. Intenté ejecutar exactamente los mismos cronjobs que ejecutaba antes en Ubuntu, sin embargo no lo hacen, y después de intentar averiguar si las entradas del crontab podrían tener algún error, cada vez tenía más la sospecha de que los cronjobs no se ejecutan en mi MBP en absoluto, así que añadí esta línea a crontab -e :

*/15 * * * * touch /Users/<my-user>/cronjob-success-"$(date +%Y%m%d)".txt

Esperaría que se ejecutara cada 15 minutos (xxh15, xxh30, ...), sin embargo no aparecen nuevos archivos. Tampoco veo ningún registro que indique que el cronjob se ejecuta.

El archivo existe en /usr/lib/cron/tabs/<my-user> . ¿Qué estoy haciendo mal para que esto no funcione?

Estoy en Catalina 10.15.6

2 votos

0 votos

Pido disculpas. Mi comentario fue introducido como una respuesta y venga código ha decidido que es un comentario y no una respuesta. Ver apple.meta.stackexchange.com/questions/3969 para más detalles.

0 votos

Además, ¿añadiste la aplicación terminal a los derechos del disco completo y cerraste la sesión/reiniciaste?

8voto

Joel Puntos 112

Yo recomendaría un par de cosas:

  1. Asegúrese de que cron tiene Acceso total al disco en la pestaña de Privacidad de System Preferences (ver s/s abajo) enter image description here

  2. Al crear comandos en crontab ayúdese a sí mismo escribiendo los errores generados por stderr a un archivo de salida utilizando 2>&1 y utilizando nombres de ruta completos (su cron trabajo no ejecutar con el mismo entorno que su usuario);

EJEMPLO:

seamus@Dung-Pro ~ % crontab -l 

*/5 * * * * /usr/bin/touch /Users/seamus/scripts/cronjob-success-"$(date)".txt

ALGUNAS OTRAS IDEAS:

  1. gurú del crontab: https://crontab.guru/

  2. no siempre es necesario, pero usar la ruta completa del comando es un buen hábito.

  3. a menudo ayuda a redirigir stderr (alias 2 ) a un archivo para revisar cuando las cosas van mal

  4. La redirección puede hacerse de la siguiente manera:
    >> /home/pi/cronjoblog 2>&1

    Esto redirige stdout a /home/pi/cronjoblog y redirige stderr a stdout es decir, ambos flujos se escribirán en el archivo.

Por último, con respecto al comando específico de tu pregunta: a mí tampoco me funciona - tiene algo que ver con el formato especificado para el date comando - date sin formato funciona bien. Si necesita ese específico para que se ejecute en cron Tendré que hacer un poco de depuración - háznoslo saber. Si no, la información anterior puede ayudarle a empezar.

2 votos

Gracias por esto. Otros tenían parte de razón, pero tu respuesta es la más completa. De hecho, tuve (y en parte sigo teniendo) una serie de problemas. En primer lugar, efectivamente tuve que dar Full Disk Access a cron . En segundo lugar, mi cronjob de prueba era efectivamente defectuoso y no funcionaba. Su ejemplo sí lo hizo. También registré stderr ahora y obtuve /bin/sh: flock: command not found . Uso flock para no ejecutar el mismo rsync dos veces. Soy consciente de que es algo original de linux, pero he instalado github.com/discoteq/flock y el rsync funciona con flock de mi usuario. Sospecho que cron utiliza otro usuario y eso lo rompe?

0 votos

Si escribo which flock Me sale /usr/local/bin/flock . Sin embargo, no estoy seguro de qué hacer con esto.

0 votos

Resulta que he ignorado una parte de tu respuesta. Tuve que especificar la ruta completa como dijiste ( /usr/local/bin/flock ) y ha funcionado :) ¡Gracias!

2voto

Oskar Puntos 1242

0 votos

Ya leí sobre esto antes, pero no parece solucionar el problema en mi caso. Lo hice en /usr/sbin/cron a Full Disk Access , pero aún así los trabajos no se ejecutan.

0 votos

Además, ¿dónde aparecen los registros de cronjob para que pueda intentar echar un vistazo?

0 votos

@YanickNedderhoff Tendré que buscar eso. He convertido el 100% de mis trabajos a launchctl para no tener que hacer toda la configuración.

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