Ejecute un trabajo cron cada minuto

Run Cron Job Every Minute



Si desea ejecutar un programa o script en segundo plano en Linux, el trabajo cron es muy importante. Con la ayuda de trabajos cron, puede ejecutar un programa o script en segundo plano después de un intervalo de tiempo determinado.

Echemos un vistazo a algunos de los ejemplos reales de trabajos cron.







  • Supongamos que posee un sitio web y desea enviar un correo electrónico a todos los usuarios de su sitio web todos los días. Todo lo que tiene que hacer es escribir un script de envío de correo electrónico y configurar un trabajo cron para ejecutar ese script todos los días.
  • Supongamos que es propietario de una agencia de publicidad y desea recordarles a todos los anunciantes cuyo saldo es inferior a 5 $ que se recarguen. Todo lo que tiene que hacer es escribir un script que verifique el saldo de todos los anunciantes y cuando sea inferior a 5 $, enviará una notificación al número de móvil o al correo electrónico del anunciante. Luego configure un trabajo cron para ejecutar el script cada 5 a 10 minutos, o cada hora.

Hay muchos otros usos de trabajos cron en Linux.



En este artículo, le mostraré cómo ejecutar trabajos cron cada minuto en Linux. Usaré Debian 9 Stretch para la demostración. Pero puede utilizar cualquier distribución de Linux moderna de su elección. Empecemos.



En Linux, no es necesario raíz para ejecutar trabajos cron. Puede ejecutar trabajos cron como cualquier usuario. Todos los usuarios de Linux pueden usar un crontab para ejecutar su propio conjunto de trabajos cron.





De forma predeterminada, un usuario no tiene una crontab archivo en Linux. Puedes crear un crontab archivo con el siguiente comando:

$crontab-Y



Si está ejecutando este comando por primera vez, se le debe solicitar que elija un editor de texto de la lista. Yo escogeré nano , el predeterminado. Puedes elegir el que más te guste. Una vez que haya terminado, presione .

los crontab El archivo debe crearse (si aún no está disponible) y abrirse con su editor de texto favorito. Ahora puede agregar sus propios trabajos cron al final de este archivo y una vez que esté satisfecho, simplemente guárdelo y salga del editor de texto.

Sintaxis de ejecutar un comando cada minuto:

La sintaxis de crontab archivo es el siguiente:

minuto hora dayOfMonth mes dayOfWeek commandToRun

Aquí,

  • minuto puede ser 0 para 59 .
  • hora puede también ser 0 para 59 .
  • dia del mes puede ser 1 para 31 .
  • mes puede ser 1 para 12 .
  • día de la semana puede ser 0 para 7 . 0 y 7 significa domingo, 1 significa lunes, 2 significa martes y así sucesivamente.

Para ejecutar un commandToRun comando cada minuto, debe escribirlo en el crontab archivo de la siguiente manera:

* * * * *commandToRun

Ejecutar un trabajo de crob cada minuto:

Ahora que conocemos las teorías, agreguemos un guión simple timer.sh al crontab archivo y vea cómo administrarlo.

En el timer.sh script, solo tengo las siguientes líneas de códigos. Todo lo que hace es crear un nuevo archivo. /home/shovon/bin/timer.log (si aún no existe) y le agrega la salida del comando de fecha.

Ahora agreguemos el script a nuestro crontab y déjelo correr cada minuto con la siguiente línea:

* * * * * /hogar/shovon/soy/timer.sh

Una vez que guarde el crontab archivo y salir del editor de texto, el nuevo crontab el archivo debe estar instalado.

Después de transcurrido un minuto, se crea un nuevo archivo. timer.log se crea en el directorio deseado como puede ver en la sección marcada de la captura de pantalla a continuación.

Desde el timer.log archivo de registro, es obvio que el script timer.sh corre cada minuto.

Detectar errores de los trabajos cron:

Para detectar errores de un trabajo cron, puede enviar los errores a un registro de errores archivo y salidas normales a access.log archivo, por ejemplo. Por supuesto, puede nombrar los archivos como desee.

Para demostrar esto, modifiqué mi script timer.sh un poco. Ahora los errores se envían a registro de errores archivo en el / inicio / shovon / bin directorio y las salidas se envían a access.log en el / inicio / shovon / bin directorio.

Al principio el / tmp / i_must_be_here el archivo no existe, por lo que aparece el error en el registro de errores archivo como puede ver.

los access.log el archivo está vacío en este momento.

Ahora voy a crear el archivo. / tmp / i_must_be_here

Y como puede ver, la salida está en el access.log archivar ahora.

Si lo desea, puede redirigir la salida y los errores en el mismo archivo de la siguiente manera:

Como puede ver, las salidas STDIN y STDERR se envían al out.log expediente.

Asegurarse de que el último trabajo terminó de ejecutarse antes de volver a ejecutar el trabajo:

Para que esto funcione, puede crear un archivo temporal justo después de que comience el trabajo y eliminarlo justo antes de que finalice. Luego, puede verificar si el archivo temporal existe antes de comenzar el trabajo. Si es así, puede salir del trabajo y ejecutarlo solo cuando el archivo temporal no esté disponible.

Este sencillo guión hace precisamente eso.

Como puede ver, el timer.pid se crea el archivo.

Leer el access.log file prueba que el trabajo cron no se ejecuta antes de que termine de ejecutarse el trabajo cron anterior. Como puede ver, se ejecutó a las 01:32:01 y la próxima vez debería haberlo hecho a las 01:33:01, pero no fue así. En cambio, se ejecutó a las 01:35:01, aproximadamente 3 minutos más tarde.

Organización de las salidas de trabajos cron para una depuración sencilla:

Puede formatear las salidas muy bien para que su trabajo cron sea más fácil de depurar.

En el siguiente guión se ofrece un ejemplo de cómo se puede hacer.

Como puede ver, las salidas, los errores y los mensajes de éxito están muy bien impresos en el archivo de registro.

Puede hacer cosas increíbles con trabajos cron y scripts de shell. Demostré algunas de las ideas aquí. Pero el cielo es tu límite. Siéntete libre de experimentar con cualquier idea que tengas. Gracias por leer este artículo.