Utilizo Crontab en mi usuario para ejecutar muchos scripts curl, funcionan bien, 40 de ellos funcionan.
Pero los scripts que tengo en el Crontab raíz, usando el comando 'sudo crontab -e', no se ejecutan, dejaron de funcionar hace aproximadamente 1 mes y funcionaron bien durante más de 2 años.
He intentado hablar con la gente del servidor y ninguno de ellos tiene idea de qué podría estar mal. Por cierto, no soy un experto en servidores, puedo seguir una guía, pero eso es todo :)
He intentado: reiniciar el servicio cron, "instalar un nuevo crontab", ejecutar los scripts en el crontab normal usando el usuario root, reiniciar el servidor, eliminar todo lo que hay en el archivo, eliminar MAILTO.
Todos los scripts funcionan simplemente ejecutándolos manualmente.
esta es la multa que no funciona:
CORREO A=""
2 3 * * * "/usr/local/scripts/backup-mysql.sh"
25 3 * * * "/usr/local/scripts/backup-prestashop.sh"
Respuesta1
Lo más útil debería ser recibir mensajes de error.
2 3 * * * { date; bash -v "/usr/local/scripts/backup-mysql.sh"; date; } &>/tmp/cron-backup-mysql.log
25 3 * * * { date; bash -v "/usr/local/scripts/backup-prestashop.sh"; date; } &>/tmp/cron-backup-prestashop.log
La salida se registra en /tmp/cron-backup-mysql.log
y /tmp/cron-backup-prestashop.log
. bash -v
genera líneas del script a medida que se leen.
Puede verificar el propietario del archivo para asegurarse de que se ejecute como root. Luego lea el archivo, tiene la hora de inicio y finalización para verificar si la ejecución finalizó y si la duración es la esperada.
Si el script ahora se ejecuta correctamente, el problema probablemente fue que el shell se invocó implícitamente (eliminar bash -v
de crontab y agregar echo SHELL = $SHELL
al script) o que faltaba el permiso de ejecución en el script ( chmod +x
).
Si el script falla, bash -v
le ayudará a encontrar el error. Puede mostrar más detalles reemplazando -v
por -x
, pero esto inundará el resultado con cada expresión a medida que se evalúan.