Echemos un vistazo a algunos de los ejemplos de la vida real de trabajos cron.
- Digamos que tienes un sitio web y quieres enviar un correo electrónico a todos los usuarios de tu 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.
- Digamos que es propietario de una agencia de publicidad y desea recordarles a todos los anunciantes cuyo saldo es inferior a 5 $ que recarguen. 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 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 usar cualquier distribución de Linux moderna 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. Todos los usuarios de Linux pueden usar un crontab archivo para ejecutar su propio conjunto de trabajos cron.
De forma predeterminada, un usuario no tiene crontab archivo en Linux. Puedes crear un crontab 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. Yo escogeré nano, el predeterminado. Puedes elegir el que más te guste. Una vez que haya terminado, presione
La 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 commandToRunAquí,
- 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 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:
* * * * * commandToRunEjecución de un trabajo de crob cada minuto:
Ahora que conocemos las teorías, agreguemos un guión simple Temporizador.sh hacia crontab archivo y vea cómo administrarlo.
En el Temporizador.sh script, solo tengo las siguientes líneas de códigos. Todo lo que hace es crear un nuevo archivo / inicio / shovon / bin / timer.Iniciar sesión (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:
* * * * * / inicio / shovon / bin / 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 Temporizador.Iniciar sesión 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.Iniciar sesión archivo de registro, es obvio que el script Temporizador.sh corre cada minuto.
Detectar errores de los trabajos cron:
Para detectar errores de un trabajo cron, puede enviar los errores a un error.Iniciar sesión archivo y salidas normales a acceso.Iniciar sesión archivo por ejemplo. Por supuesto, puedes nombrar los archivos como quieras.
Para demostrar esto, modifiqué mi script Temporizador.sh un poco. Ahora los errores se envían a error.Iniciar sesión archivo en el / inicio / shovon / bin directorio y las salidas se envían a acceso.Iniciar sesión 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 error.Iniciar sesión archivo como puede ver.
La acceso.Iniciar sesión 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.Iniciar sesión 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 fuera.Iniciar sesión 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 script hace precisamente eso.
Como puede ver, el Temporizador.pid se crea el archivo.
Leer el acceso.Iniciar sesión El archivo demuestra 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 haberse ejecutado 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.
Un ejemplo de cómo se puede hacer se da en el siguiente guión.
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 limite. Siéntete libre de experimentar con cualquier idea que tengas. Gracias por leer este artículo.