Calificación:
  • 2 voto(s) - 3.5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Duda crontab
#1
Pregunta 
Buenas a tod@s:

He hecho un par de scripts para que se ejecuten uno detrás de otro  (el primero llama al segundo)

Ambos scripts ejecutados manualmente funcionan a la perfección y ahora quiero automatizar su ejecución.


Antes de pasarme por aquí he leído varios tutoriales y he probado varios comandos para poder ejecutar automáticamente los scripts. Sin embargo no me funciona ninguno. Por lo tanto, seguramente estoy haciendo algo mal.

Hasta ahora había probado chmod 775 script.sh. También he probado con el comando chmod a+x ruta/script.sh y tampoco.

Dentro del crontab (he configurado mediante crontab-e, después hay el de sudo crontab-e, pero yo he configurado el del propio usuario) y he puesto la siguiente configuración: 

0 * * * * /home/pi/Desktop/Scripts/script.sh

Así se ejecutará cada hora para siempre.

Sin embargo no sucede nada. Qué tengo que hacer para que se ejecute correctamente? Tengo que dar algun permiso especial a los dos scripts a ejecutar qu aún no haya hecho?

Es que ya digo, he probado todo lo que he leído y nada.

He probado de en el crontab especificar el usuario, sin embargo he visto sitios donde no lo especifican y no sé si uno esta bien o los dos están bien.


Bueno, cualquier ayuda será bien recibida.


Muchas gracias de antemano.
Citar
#2
los permisos son correctos, revisa los logs a ver qué hay

Prueba a ver si hay algo oraro en el syslog con
Código:
sudo grep CRON /var/log/syslog

sudo: es necesario porque el usuario "pi" no tiene permisos de lectura, o si estás como root, pues no es necesario
grep: busca expresiones regulares dentro del archivo, en este caso, buscará la palabra "CRON" dentro del archivo /var/log/syslog , que es el log del sistema



También recomiendo logear la salida del script

Código:
0 * * * * /home/pi/Desktop/Scripts/script.sh >> /home/pi/Desktop/Scripts/cron.log 2>&1

El 2>&1 hace que tanto el stdout como el stderr se guarden en el log (la salida del script, como cualquier error que pase)
/home/pi/Desktop/Scripts/cron.log lo puedes cambiar por la ruta que quieras (siempre que tengas permisos claro).

Comprueba que el script funciona con la ruta completa, a veces ese es el error
Citar
#3
Burnas a tod@s:

Esta noche hago la prueba.

Muchas gracias
Citar
#4
Hola,

una forma de saber si realmente se ejecuta es hacer en la primera linea del script

touch /tmp/prueba

luego miras si /tmp/prueba existe, quien es el owner (para saber con que usuario se esta ejecutando) y la hora.

no hace falta que lo metas en el crontab. Puedes hacer un ln -s /path/complete/script.sh /etc/cron.hourly

una de las lineas del crontab es ejecutar todos los scripts que hay en /etc/cron.hourly

otra cosa que puedes hacer es usar el comando logger para redirigir la salida del script al syslog, para ver si hay algun tipo de error

Espero que esto te ayude!

Un saludo.
Citar
#5
Buenas a tod@s:

Este fin de semana he estado trasteando otra vez el CRON y veo que no funciona.

La otra vez tampoco lo pude solucionar ya que con el trabajo no tengo demasiado libre, y este finde me he vuelto a poner con el tema desde 0.

El script he hecho que se ejecute cada hora de este modo:


@hourly pi /home/pi/Desktop/Scripts/velocitat_internet.sh

He mirado el log y me sale esto:

Jul 17 21:00:01 raspberrypi2 CRON[15354]: (pi) CMD (pi /home/pi/Desktop/Scripts/velocitat_internet.sh)
Jul 17 21:00:02 raspberrypi2 CRON[15350]: (pi) MAIL (mailed 26 bytes of output but got status 0x004d from MTA#012)

En teoria el script velocitat_internet.sh llama a otro script para generar un informe y este segundo script llama a otro script en el caso de que haya que hacer algun reporte.

No sé si hay algun incoveniente que el primer script sea en bash y los otros dos en python.

Pero cuando voy a buscar el informe no ha adjuntado nada con lo cual entiendo que no se ha ejecutado el script.

El script ejecutado manualmente funciona.

He dado permisos chmod 777 a todos los scripts involucrados.


Alguna suggerencia? Había llegado a ejecutar scripts con el crontab. Pero llevo un par de intentos que me sale el tiro por la culata.

Gracias a todos Sonrisa
Citar
#6
Buenas tardes:

Veo que me da un error que "bin/bash" not found.

Hay que indicarle la ruta de bash?

En este caso, donde se encuentra?

Muchas gracias
Citar