GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿El trabajo de Cron no se ejecuta?

Estaba haciendo un trabajo cron para guardar mi mundo de Minecraft desde mi RAM cada 5 minutos.
Probé el script y parece estar funcionando.

Así es como se ve el script:

#!/bin/sh


VOLATILE="/home/jonathan/Games/Minecraft/Server/world/"
PERMANENT="/home/jonathan/Games/Minecraft/Server/world_storage/"
rsync -r -t -v "$VOLATILE" "$PERMANENT"

Entonces fui a agregar un trabajo cron para ejecutar el script cada 5 minutos, y parece que no lo está ejecutando.

Este es el script que usé:

*/5 * * * * bash /home/jonathan/Games/Minecraft/Server/Backup.sh

¿Alguien puede ayudarme por favor?

Respuesta aceptada:

No especificó cómo agregó su cronjob. Esto hace una gran diferencia:si ha usado crontab -e dentro de su propia cuenta, los scripts se ejecutan con su usuario (y, por lo tanto, la entrada crontab tiene un campo menos:el usuario para ejecutarlo, como se conoce). Si simplemente copió su fragmento anterior a /etc/cron.d , fallaría porque no especificó un usuario (o más bien porque no encuentra ningún usuario llamado "bash"). Por lo tanto, debe seguir los siguientes pasos:

  1. actualice su pregunta con información sobre cómo agregó el trabajo cron
  2. verifique los registros del sistema (/var/log/syslog; podrían señalar posibles errores)
  3. añade algo de salida de depuración a tu Backup.sh script para ver si se ha iniciado

El tercer punto se puede lograr de varias maneras:

  • agregue un >>/tmp/testlog.log al final de su entrada crontab (para redirigir la salida a un archivo que puede investigar; además, un 2>&1 incluiría la salida de la consola de errores)
  • añada algunas líneas a su propia secuencia de comandos, como p. echo "Backup.sh started">/tmp/testlog.log

Además:como pretende que su script se ejecute usando bash , no debes decirle que use /bin/sh (lo que haría que usara dash en una instalación predeterminada de Ubuntu), sino /bin/bash . Luego hágalo ejecutable e incluso puede omitir el "bash" de su entrada crontab.

Actualización:

De acuerdo con su comentario sobre mi respuesta, usó crontab -e para crear el trabajo, y de acuerdo con los registros de su sistema, se ejecuta, pero la definición es bastante

*/5 * * * * bash /home/jonathan/Games/Minecraft/Server/Backup.sh &>/dev/null

Esto redirige toda la salida al almacenamiento más grande de su sistema, el "agujero negro":/dev/null come todo (pero nunca devuelve nada). Redireccionar STDOUT así como STDERR de esta manera le roba cualquier informe de error, por lo que nunca sabrá si ocurrieron, y mucho menos los detalles. Para realizar pruebas, debe omitir &>/dev/null parte completamente. Incluso si funciona, solo debe suprimir la salida innecesaria; de lo contrario, nunca se sabe cuándo algo sale mal. Por lo tanto, mejor omita al menos el ampersand, para que Cron pueda informar cualquier error que ocurra.

Relacionado:¿La base USB para disco duro Seagate de 4 TB solo funciona con menos de 2,2 TB de datos?

Además:una vez que se redirige la salida (como en su caso a /dev/null ), agregar otra redirección al final no dará ningún resultado, ya que todo ya se ha ido. Así que tengo que ajustar el consejo anterior de "agregar... al final de tu entrada de crontab" a "reemplazar eso en tu entrada de crontab" 😉


Ubuntu
  1. ¿Trabajo cron para verificar si el script Php se está ejecutando, si no, entonces ejecutar?

  2. Probar un trabajo cron semanal

  3. Pasar parámetros $_GET al trabajo cron

  4. El script de datos de usuario (cloud-init) no se ejecuta en EC2

  5. shebang o no shebang

Cómo configurar un trabajo cron en Linux

Trabajos cron programados

¿La secuencia de comandos de Shell no se ejecuta después de agregarla como un trabajo Crontab?

¿Cómo configurar el trabajo cron para ejecutar un script PHP en cPanel?

¿Qué es un trabajo cron en Linux?

¿Por qué mi trabajo cron no me envía un correo electrónico?