Este artículo explicará la programación de tareas y la ejecución de scripts a intervalos regulares utilizando trabajos cron.
Que es Cron?
Cron es un programa de programación de tareas que se ejecuta en segundo plano como un proceso. Se puede usar para ejecutar periódicamente ciertos trabajos que están programados utilizando su conjunto predefinido de reglas. Cron viene preinstalado en la mayoría de las distribuciones de Linux o está disponible en los repositorios para ser instalado manualmente.
Ajustes preestablecidos de cron
Cron en Ubuntu viene con un conjunto de programadores predefinidos. Puede verificarlos ejecutando el siguiente comando:
$ ls / etc / cron.*Por lo general, estas carpetas son "/ etc / cron.por hora ”,“ / etc / cron.diario ”,“ / etc / cron.mensual ”y“ / etc / cron.semanal".
Simplemente coloque los scripts que desee en una de estas carpetas para ejecutar tareas automatizadas cada hora, diaria, mensual o semanalmente.
Tenga en cuenta que cron usa el shell "/ bin / sh" de forma predeterminada. Si desea utilizar "/ bin / bash" como shell en los scripts cron, debe utilizar "!# / bin / bash ”hashbang en la parte superior del archivo de script o defina shell como variable“ SHELL = / bin / bash ”en la primera línea en un script de bash programado. Anular la variable de entorno "SHELL" también funciona para el editor crontab que se explica a continuación.
No todas las variables de entorno del sistema pueden estar expuestas a los trabajos cron. Por lo tanto, generalmente es una buena idea definir manualmente las variables de entorno importantes en un script programado por cron.
Crontab
Crontab le permite definir sus propias tareas programadas. Puede usarlo para configurar horarios cron diferentes de los cuatro ajustes preestablecidos cron estándar explicados anteriormente.
Para configurar una tarea programada en crontab, primero inicie el editor crontab usando el siguiente comando:
$ crontab -eAhora, al final del archivo, puede agregar una entrada en el siguiente formato:
minuto hora día mes día de la semana / completo / ruta / a / script.shDónde:
- minuto: cualquier valor en el rango de 0 a 59
- hora: cualquier valor en el rango de 0 a 23, siendo 0 la medianoche
- día: cualquier valor en el rango de 1 a 31
- mes: cualquier valor en el rango de 1 a 12
- día de la semana: cualquier valor en el rango de 0 a 6, siendo 0 el domingo
La entrada crontab a continuación tomará una captura de pantalla de su escritorio y la almacenará en su directorio de inicio una vez a las 15:13 horas el 2 de marzo más todos los martes de marzo a las 15:13 horas.
13 15 2 3 2 escrotoPara enumerar todas las entradas de crontab, use el siguiente comando:
$ crontab -lMás ejemplos
Las tareas cron se pueden explicar mejor a través de ejemplos, por lo que a continuación se muestran algunos ejemplos que tomarán capturas de pantalla de su escritorio periódicamente y las almacenarán en la carpeta de inicio.
Además de las cinco variables de programación, cron también usa una cadena especial para programar trabajos. Estas cadenas son:
- @hourly: el trabajo se ejecuta cada hora
- @daily / @midnight: el trabajo se ejecuta todos los días
- @weekly: el trabajo se ejecuta una vez a la semana
- @monthly: el trabajo se ejecuta una vez al mes
- @yearly / @anually: el trabajo se ejecuta una vez al año
- @reboot: el trabajo se ejecuta una vez cada reinicio / inicio de sesión
La entrada crontab a continuación tomará una captura de pantalla una vez en cada reinicio:
@reboot scrotPuede reemplazar "@reboot" con cualquier otra cadena especial mencionada anteriormente.
El uso de un asterisco o comodín en lugar de cualquiera de las cinco variables repetirá el trabajo en todas las instancias nuevas de esa variable. La entrada a continuación tomará una captura de pantalla cada minuto:
* * * * * EscrotoCada hora:
0 * * * * escrotoTodos los días a las 18:00 horas:
0 18 * * * escrotoCada mes el día 6 a las 18:00 horas:
0 18 6 * * escrotoUtilice "/" para ejecutar un script en un intervalo periódico fijo de 30 minutos (se ejecuta cada 30 minutos):
* / 30 * * * * escrotoPuede utilizar variables separadas por comas para definir la ejecución repetida del script a intervalos regulares. El siguiente ejemplo tomará una captura de pantalla de su escritorio cada primer, cuarto y quinto minuto de una nueva hora.
1,4,5 * * * * escrotoVerificación de entradas de Crontab
Definir las entradas de crontab puede ser complicado, pero depurarlas o verificar si funcionan en las marcas de tiempo correctas es aún más complicado. Una opción es utilizar una máquina virtual y registrar las marcas de tiempo de un script que se ejecuta periódicamente en un trabajo cron al incluir algo como el comando "fecha" y redirigir la salida a un archivo de texto. Sin embargo, una mejor solución es utilizar uno de los numerosos servicios de prueba de trabajos cron en línea disponibles en la web. Recomiendo que el sitio web de cron tester esté disponible aquí un intento.
Conclusión
La ejecución de trabajos cron es una excelente manera de automatizar tareas repetidas, especialmente en servidores. La herramienta es extremadamente poderosa y personalizable. Sin embargo, es importante asegurarse de que la definición de su programador funcione correctamente, especialmente si hay tareas de misión crítica.