guiones de bash y python de cola cron

Sep 29 2020

Actualmente estoy buscando entender y sentirme cómodo con las colas crontab en mi macbook pro. Recientemente resolví un problema por el cual mi simple script bash no se ejecutaba. Resulta que tuve que mover mi script bash y su salida en la /Users/myusername/ruta. Antes de que lo tuviera en el /Users/myusername/Desktop/. Esta publicación se puede encontrar aquí:https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

Mi pregunta: ¿Todos mis scripts de bash y python deben estar alojados en la /Users/myusernameruta siempre? ¿No hay solución?

Respuestas

3 Seamus Sep 30 2020 at 13:36

Pregunta:

Mi pregunta: ¿Todos mis scripts de bash y python deben estar alojados en la /Users/myusernameruta siempre? ¿No hay solución?

Responder:

No. Puede ubicar sus scripts de bash y python en cualquier lugar que desee. Sin embargo, existen requisitos adicionales :

  1. Sus crontrabajos se ejecutan con un ENTORNO diferente al que tenía cuando los ejecuta; ej $PATH. En consecuencia, debe utilizar una especificación de ruta completa para especificar sus scripts en el crontab; por ejemplo use:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  1. En mi Mac (Catalina) he encontrado que es necesario otorgar privilegios de "Acceso total al disco" cron. YMMV en una versión de SO diferente. Así es cómo:

System Preferences -> Security & Privacy -> Privacy pestaña:

  1. Al menos mientras depura su crontrabajo, debería considerar redirigir cualquier mensaje de error ( stderr) a un archivo; de lo contrario, terminan en lo /dev/nullque no es útil. Continuando con el ejemplo anterior:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
2 bmike Sep 29 2020 at 07:24

Es posible que solo deba asegurarse de otorgar permisos a los elementos y usar rutas completas para todo. El hecho de que un script se ejecute cuando se encuentra en un shell interactivo no significa que sea correcto en un shell limitado.

Aquí hay súper consejos de depuración sobre una pregunta reciente.

  • cron y "comando no encontrado"
  • cronjobs no se ejecutan
  • Obteniendo un error de comando desconocido al intentar ejecutar un script a través de cron