Ejecutar un trabajo cron cada minuto

Ejecutar un trabajo cron cada minuto
Si desea ejecutar un programa o script en segundo plano en Linux, entonces el trabajo cron es muy importante. Con la ayuda de Cron Jobs, 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 de la vida real de trabajos de cron.

  • Digamos que es dueño de un sitio web y desea enviar a todos los usuarios de su sitio web un correo electrónico todos los días. Todo lo que tiene que hacer es escribir un correo electrónico enviando script y configurar un trabajo cron para ejecutar ese script todos los días.
  • Digamos que es dueño de una agencia de publicidad y desea recordar a todos los anunciantes cuyo saldo está por debajo de 5 $ para recargar. Todo lo que tiene que hacer es escribir un script que verifique el saldo de todos los anunciantes y cuando esté por debajo de 5 $, enviará una notificación al número o correo electrónico de móvil 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 usar cualquier distribución moderna de Linux de su elección. Empecemos.

Conceptos básicos de Crontab:

En Linux, no tienes que ser raíz Para ejecutar trabajos cron. Puede ejecutar trabajos cron como cualquier usuario. Cada usuario en Linux puede usar un crontabista Archivo para ejecutar su propio conjunto de trabajos cron.

Por defecto, un usuario no tiene un crontabista Archivo en Linux. Puedes crear un crontabista Archivo con el siguiente comando:

$ crontab -e

Si está ejecutando este comando por primera vez, se le debe pedir que elija un editor de texto de la lista. Voy a elegir nano, el predeterminado. Puedes elegir el que te guste. Una vez que haya terminado, presione .

El crontabista El archivo debe crearse (si no está disponible ya) y abrir con su editor de texto favorito. Ahora puede agregar sus propios trabajos cron al final de este archivo y una vez que esté contento, simplemente guárdelo y salga del editor de texto.

Sintaxis de ejecutar un comando cada minuto:

La sintaxis de crontabista El archivo es el siguiente:

Hora de minuto de día de Month Mes Dayofweek Commandtorun

Aquí,

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

Para ejecutar un comandante comandar cada minuto, debes escribirlo en el crontabista Archivo de la siguiente manera:

* * * * * CommandTorun

Ejecutar un trabajo de cob cada minuto:

Ahora que conocemos las teorías, agregemos un script simple Temporizador.mierda hacia crontabista archivo y ver cómo administrarlo.

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

Ahora agregemos el script a nuestro crontabista Y déjelo correr cada minuto con la siguiente línea:

* * * * * */home/shovon/bin/temporizador.mierda

Una vez que guardes el crontabista Archivo y salga del editor de texto, el nuevo crontabista El archivo debe instalarse.

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

Desde el Temporizador.registro archivo de registro, es obvio que el script Temporizador.mierda corre cada minuto.

Capturar errores de los trabajos cron:

Para detectar errores de un trabajo cron, puede enviar los errores a un error.registro Archivo y salidas normales a acceso.registro archivo por ejemplo. Por supuesto que puede nombrar los archivos que desee.

Para demostrar esto, modifiqué mi guión Temporizador.mierda un poco. Ahora los errores se envían a error.registro archivo en el /Home/Shovon/Bin directorio y las salidas se envían a acceso.registro en el /Home/Shovon/Bin directorio.

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

El acceso.registro 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 acceso.registro archivo 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 afuera.registro archivo.

Asegurarse de que el último trabajo terminara de funcionar antes de ejecutar el trabajo nuevamente:

Para que esto funcione, puede crear un archivo temporal justo después de que comience el trabajo y eliminarlo justo antes de que termine. Luego puede verificar si el archivo temporal existe antes de comenzar el trabajo. Si lo hace, puede salir del trabajo y ejecutar el trabajo solo cuando el archivo temporal no está disponible.

Este script simple hace exactamente eso.

Como puedes ver, el Temporizador.pid Se crea el archivo.

Leer el acceso.registro El archivo demuestra que el trabajo de Cron no se ejecuta antes de que el trabajo de Cron anterior termine de funcionar. Como puede ver, se ejecutó a las 01:32:01 y la próxima vez debería funcionar a las 01:33:01, pero no lo hizo. En cambio, se ejecutó a las 01:35:01, unos 3 minutos después.

Organización de salidas de trabajo cron para una fácil depuración:

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

Un ejemplo de cómo se puede hacer se da en el siguiente script.

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

Puedes hacer cosas increíbles con trabajos cron y guiones de shell. Demostré algunas de las ideas aquí. Pero el cielo es tu límite. No dude en experimentar con cualquier idea que tenga. Gracias por leer este artículo.