Traté de configurar un trabajo cron de root para ejecutar un script Bash como root, para ejecutar en el minuto 7,37, cada hora, todos los días del mes, todos los meses. Este script está ubicado /usr/bin
y nombrado tunlrupdate.sh
. Actualiza el DNS de Tunlr.
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
Este script de Bash está disponible aquí .
Cuando se invoca, el script escribe lo que sucede en un registro ubicado en /var/log/tunlr.log
Para agregar este trabajo cron de root usé el estándar para crontab de root
sudo crontab -e
E insertó estas 2 líneas al final. Espero que cron ejecute el script como root.
# check for updated Tunlr DNS every 30 minutes at the hour + 7 mn and hour + 37 mn
07,37 * * * * root /usr/bin/tunlrupdate.sh
Un comando posterior sudo crontab -l
confirmó que el trabajo cron ha sido insertado.
Reinicié Ubuntu y estaba revisando el archivo de registro si el trabajo cron se inició correctamente. Sin embargo, no hay nada en el archivo de registro que /var/log/tunlr.log
signifique que el trabajo nunca se inició con éxito.
Verifiqué que si ejecuto el script desde la línea de comando
sudo /usr/bin/tunlrupdate.sh
entonces el archivo de registro se actualiza en consecuencia.
¿Por qué este trabajo cron no se ejecuta según lo planeado en mi sistema?
ACTUALIZACIÓN 1: Todas las soluciones propuestas hasta ahora no funcionan. Agradezco a Olli por una CLI para enumerar el registro del sistema sudo grep CRON /var/log/syslog
. Sin embargo, recibí un error CRON
CRON[13092]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]
&& find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php
/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
con la RUTA sugerida = inserción y uso de ruta absoluta desde la raíz para funciones en el script o sin las soluciones sugeridas aquí. Todavía recibo este error.
Después de algunas búsquedas, identifiqué el error en el archivo /usr/lib/php5/maxlifetime
como se explica aquí :Change #!/bin/sh -e --> #!/bin/sh -x
Luego enumerando el registro de errores CRON en mi sistema
sudo grep CRON /var/log/syslog
Feb 11 18:07:01 Marius-PC CRON[14067]: (root) CMD (root /usr/bin/tunlrupdate.sh)
Feb 11 18:07:01 Marius-PC CRON[14066]: (root) MAIL (mailed 1 byte of output; but got
status 0x00ff, #012)
Todavía no consigo ejecutar el script bash. Esta vez no se muestra ningún error en el registro. Para asegurarme de que este no era el contenido del guión, reduje el guión a las siguientes 3 líneas:
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
Todavía no consigo el trabajo cron. Nada está escrito en el archivo de registro. Entonces, ¿puede ser que un script vacío no se ejecute en cron? No lo entiendo Sé probar un script reducido a estas 2 líneas:
#!/bin/bash
exit 0
Y sigue siendo el mismo registro de errores. El script cron no pasa por ...