¿Alguna vez has intentado programar una tarea repetitiva en tu servidor Linux y no has sabido cómo hacerlo? Las herramientas cron y crontab que están disponibles de forma predeterminada en sistemas Linux te permitirán realizar una determinada tarea (o varias) en un determinado tiempo, y es que vamos a ser capaz de programar con una exactitud de minutos qué queremos ejecutar y cuándo lo queremos ejecutar. Hoy en RedesZone os vamos a explicar en detalle cómo funciona tanto Cron como Crontab, para que administres correctamente tus servidores.
Estos dos elementos son muy importantes a la hora de programar tareas periódicas y que se ejecuten sin que tengamos que estar pendientes de su estado. Nos va a permitir despreocuparnos de ejecutar algo en un determinado momento, dejándolo completamente automático en el sistema operativo. Hemos mencionado con anterioridad Cron y Crontab. En primer lugar, vamos a ver qué diferencias existen entre ambos elementos. Posteriormente aprenderemos a agregar tareas, y para finalizar, nos adentraremos en la gestión de los jobs (trabajos) de Cron. Aprenderás todo lo necesario para poder utilizarlos.
Diferencias entre Cron y Crontab
Aunque pueda parecer que estamos hablando de lo mismo, no es así, y se podrían considerar dos elementos dependientes uno del otro. Para ser más claros, son los encargados de que la programación de tareas en sistemas Linux sea posible. Actualmente cualquier sistema operativo basado en Linux dispone de ambas herramientas, con el objetivo de programar las diferentes tareas de forma repetitiva sin que nosotros nos tengamos que encargar de ello.
Por tanto, si necesitas que se ejecute algo determinado en una hora concreta, cada día, cada semana, cada mes… Vas a poder utilizar estas dos herramientas que están disponibles en Linux. No importa qué distribución tengas instalada, ya que es compatible con todas ellas.
Qué es Cron
Cron es un demonio (que es como se conoce a un proceso en segundo plano) que se ejecuta desde el mismo instante en el que arranca el sistema operativo. Cron se encargará de comprobar si existe alguna tarea (job) para ser ejecutada, de acuerdo a la hora configurada en el propio sistema operativo. Es muy importante que la hora esté bien configurada, y también la zona horaria, de lo contrario, las ejecuciones que realice Cron no se corresponderán con nuestras configuraciones.
Para garantizar que nuestro sistema operativo esté configurado correctamente, es muy importante que obtenga la hora automáticamente de los servidores NTP (Network Time Protocol) que existen. Para comprobar que tenemos la hora correcta en nuestro sistema operativo, en qué zona horaria estamos y si el reloj del sistema está correctamente sincronizado con los servidores NTP, podemos ejecutar la siguiente orden:
timedatectl
Deberíamos ver algo como lo siguiente:
Tal y como se puede ver, todas las horas cuadran perfectamente y el tiempo es el correcto, esto es muy importante, de lo contrario, los «Cron» se ejecutarán en horas donde no deberían ejecutarse. Habría un problema si el sistema está mal configurado y coge una hora que no corresponde. En el caso de que no tengamos la zona horaria bien configurada, podremos configurarla de forma correcta con la siguiente orden:
timedatectl set-timezone Europe/Madrid
Con la instalación del sistema operativo Linux, se configuran de forma automática los servidores NTP que nosotros queramos, en caso de fallo o que queramos cambiar estos servidores NTP, podremos hacerlo instalando el correspondiente servicio y configurándolo en /etc/ntp.conf.
En función de la distribución, Cron se inicia utilizando las carpetas /etc/rc.d/ o /etc/init.d y cada minuto comprueba los ficheros /etc/crontab o /var/spool/cron en busca de posibles ejecuciones que hayamos programado. Con esto podremos automatizar muchos procesos, agregando nuevos comandos o scripts con tareas a cron. Nos resultará muy útil, por ejemplo, par automatizar actualizaciones de los sistemas o para tener un protocolo de respaldo. Pero estas deben estar siempre escritas en un fichero Crontab.
Puede tener diferentes valores, según sea el periodo de tiempo en el que va a ejecutar una acción. Por ejemplo hacer algo cada hora, cada día, cada semana, siempre a un momento concreto del día, etc. Todo esto lo vas a poder configurar y programar para evitar que algo no se ejecute correctamente. Lo que va a hacer es revisarlo siempre que llegue el momento exacto.
Qué es Crontab
Crontab es un archivo de texto, se trata de un archivo con un contenido especial y específicamente diseñado para que sea leído correctamente por Cron y proceder con la ejecución que nosotros hayamos programado. Crontab posee una lista con todos los scripts a ejecutar, generalmente cada usuario del sistema posee su propio fichero Crontab, de esta forma, cada usuario podría programar sus propias tareas repetitivas independientemente, sin necesidad de que siempre tengamos que acudir al usuario administrador.
De esta forma, cualquier usuario (incluyendo los administradores) podrán programar tareas repetitivas para realizar diferentes ejecuciones. Por esto mismo, será muy útil para hacer un seguimiento y verificar que se cumplen las tareas como pueden ser las actualizaciones, sincronización o edición del estado de los contenidos como eliminar ciertos apartados.
Para generar el archivo propio, cada usuario deberá hacer uso del comando «crontab» (sí, es el mismo nombre que la propia herramienta). Se utiliza mucho para poder ejecutar y administrar tareas de Cron en un sistema.
Con Crontab, como vas a ver, podrás configurar el archivo según unos parámetros establecidos. Podrás poner un tiempo exacto para que ejecute la acción (o múltiples tareas). Su nombre, como en el caso de Cronos, viene de la palabra griega «tiempo», por lo que esa va a ser la clave de su funcionamiento.
Además de lo anterior, hay que tener en cuenta que la sintaxis crontab cuenta con hasta cinco campos. Cada uno de estos tiene una serie de valores que puedes encontrar en las siguientes líneas:
- Minuto: valores 0-59.
- Hora: valores 0-23.
- Día del mes: valores 1-31.
- Mes: valores 1-12.
- Día de la semana: valores 0-6. El 0 representa el domingo. Ten en cuenta que en algunos sistemas, el valor 7 representa el domingo.
- Comando: valores Orden a ejecutar.
Agregar tareas a Crontab
Partiendo de que podemos ejecutar tareas, en primer lugar, vamos a configurar un script muy sencillo que llamaremos consulta.sh, pondremos en nuestro «Escritorio» o en «Documentos» este script, podremos ejecutar directamente el editor de texto «nano» en la ubicación donde queramos ponerlo:
nano consulta.sh
El contenido del script sería el siguiente:
#!/bin/bash
#script de ejemplo
sudo ls -l / > archivoResultado.txt
Una vez que hayamos programado el script, que básicamente es un programa que lista los archivos y directorios del directorio actual, y lo exporta a un archivo de texto, tenemos que darle permisos de ejecución para poder ejecutarlo correctamente por parte de Cron, de lo contrario no tendrá permisos de ejecución:
chmod ugo+x consulta.sh
Este aspecto es muy importante, ya que de lo contrario el comando nunca será ejecutado.
Ha llegado el momento de editar el fichero que posee las tareas. Para ello nos vamos a ayudar del comando crontab -e. Nos encontramos la siguiente estructura:
5 asteriscos y el comando a ejecutar. Cada uno de los 5 asteriscos significa:
- m: minuto
- h: hora
- dom: día del mes
- mon: mes
- dow: día de la semana
Lo valores que pueden adoptar cada una de estas variables se encuentran en la imagen. Por ejemplo, en el caso del último, se permite la utilización del nombre de los días escritos en inglés. Aunque en la imagen anterior no aparezca, es necesario indicar entre el comando y el último asterisco (el día) el propietario del archivo para que funcione correctamente.
Para que quede todo claro, vamos a utilizar algunos ejemplos:
Si queremos ejecutar el script de consulta.sh todos los días a las 7 de la tarde, tendremos que indicar una línea en el crontab con lo siguiente:
00 19 * * * usuario /ubicacion/del/script/consulta.sh
Si queremos ejecutar todos los domingos a las 7 de la tarde:
00 19 * * 0 usuario /ubicacion/del/script/consulta.sh
Ejecutar el script todos los 4 de febrero a las 7 de la tarde:
00 19 4 2 * usuario /ubicacion/del/script/consulta.sh
Hay que decir que en Linux existen algunas cadenas de texto reservadas para ejecutar procesos durante determinados periodos en el propio Crontab, esto nos será de mucha ayuda:
- @reboot: Ejecuta una vez y nada más iniciarse el equipo.
- @yearly: ejecuta sólo una vez al año: 0 0 1 1 *
- @monthly: ejecuta una vez al mes y el primer día: 0 0 1 * *
- @weekly: todas las semanas, el primer minuto de la primera hora de la semana: 0 0 * * 0.
- @daily: todos los días a las 12 de la noche: 0 0 * * *
- @midnight: Tiene el mismo efecto que el anterior.
- @hourly: todas las horas durante su primer minuto: 0 * * * *
Aunque os hemos puesto cuál sería el formato, al hacer uso de crontab -e se pueden utilizar estos términos para definir el periodo. Puede que necesites que se ejecute cada hora, cada día, cada semana, cada mes… En definitiva, cualquiera de estas opciones vas a tener disponibles.
Caracteres especiales
Como has podido ver, las posibilidades a la hora de establecer nuevas tareas se pueden utilizar muchos caracteres diferentes. Para ello podemos utilizar algunos modificadores, los cuales nos dan mucho más poder de crear nuevas reglas. Lo cual aumenta las posibilidades para poder crear procesos mucho más complejos, y como tal más precisos. Estos son
- *: Tiene el mismo significado que asignar todos los valores.
- ,: Nos da un listado de valores.
- -: Establece un rango de calores.
- /: Significa «cada».
- rango / excep: Crea excepciones en la regla.
Otro símbolo que es imprescindible en el día a día de crear reglas, es la almohadilla #. La cual será utilizada al comienzo de las líneas para indicar que estamos escribiendo tan solo un comentario. Esto puede servir para dejar algunas aclaraciones de como se hace algo, o para que sirve. Pero en general podemos escribir lo que queramos. En ese caso, esta no se tendrá en cuanta para la ejecución de la orden. Ocurre lo mismo que con los demás lenguajes de programación, donde siempre podremos establecer comentarios para dejar algún tipo de aclaración.
Una vez sabemos todo esto, ya podremos empezar a crear nuestras propias reglas. Pero es probable que, si queremos hacer alguna muy compleja, sea necesario tener algunos conocimientos de programación. Sobre todo, para comprender la estructura de cómo se va a ejecutar alguna tarea concreta. Y en caso de que falle, sabes donde se puede estar produciendo el problema en cuestión.
Con esta serie de caracteres especiales se pueden llevar a cabo diferentes tareas: programar un trabajo para una hora en concreto, programar un trabajo de fondo cada día, llegar a ejecutar un comando Linux después de cada reinicio, ver las entradas Crontab o editarlas, entre otras muchas tareas. Y lo cierto es que no son las únicas acciones que se pueden llevar a cabo a la hora de usar la sintaxis Crontab por nuestra cuenta.
Otras posibles tareas con Crontab
En este apartado, es posible hacer nuevos apartados y subapartados, pues no se limita a unas pocas opciones. Por ejemplo podemos ver cuales son los crontabs que se ejecutan en tiempo real como los siguientes:
- Eliminar archivos y directorios vacíos. Esta tarea puede ser programada de forma muy personalizada.
- Ejecución de múltiples tareas. Nos permite ejecutar varias tareas o trabajos, pero siempre de forma separada.
Y también es posible generar cadenas especiales de Crontab, como por ejemplo la ejecución de tareas de forma anual o mensual. Esto puede configurarse de forma que se ejecute en el minuto uno del año, pero en todo caso es posible realizar configuraciones muy variadas, todo de la mano de la programación que se realice con el comando.
Además de todo lo anterior, lo cierto es que hay otra serie de acciones extra de Crontab que te pueden interesar. Como es el hecho de realizar acciones adicionales como, por ejemplo, para crear un archivo de registro o hasta para desactivar un correo electrónico. Al igual que hay que tener en cuenta que te da la oportunidad de definir diferentes variables de entorno. Y es que no hay olvidar que entre toda la parte de funciones de crontab también hay otra serie de acciones extra que se pueden aprovechar como es el caso de:
- Crear un archivo de registro: consigue que el comando pueda almacenar todas las salidas de los trabajos cron en un solo archivo llamado logs.log.
- Entorno Crontab: llega a permitir que los usuarios puedan definir variables de entorno, es decir, se usa el comando crontab -e y se tiene que hacer uso de las opciones PATH, SHELL, LOGNAME y HOME.
Administración de los jobs del Cron
El funcionamiento de Crontab es muy sencillo, tal y como hemos podido ver, ahora os vamos a enseñar algunos comandos básicos para controlar el funcionamiento del propio Crontab en sistemas operativos Linux y que puedas ponerlo en práctica. Simplemente vas a tener que llevar a cabo estos pasos y podrás comenzar a usarlo.
Para remplazar el archivo existente por otro que defina el usuario se debe utilizar el siguiente comando:
crontab archivo
Para editar el archivo existente en la actualidad se utiliza el comando que ya hemos visto a lo largo de este artículo:
crontab -e
Listar todas las tareas existentes en el crontab del usuario:
crontab -l
Borrar el crontab que está configurado:
crontab -d
Definir el directorio en el que se almacenará el archivo de crontab. Para realizar esta operación se deben tener permisos de ejecución en dicho directorio:
crontab -c dir
Instrucción para manejar el crontab de otros usuarios existentes en el sistema:
crontab -u usuario
Este comando te permite borrar el archivo crontab de manera permanente:
crontab -r
Además de las anteriores opciones, o comandos como crontab- h, este sistema operativo también te ofrece una serie de cadenas de texto que ya vienen configuradas de manera predeterminar para que se puedan programar scripts de forma automática. Estas son las más comunes:
- @reboot: este sirve para que se ejecute el script una vez que se inicia el equipo.
- @yearly o @anually: consigue que se ejecute el script una vez al año.
- @monthly: para que se ejecute de manera mensual, el primer día de cada mes.
- @weekly: en este caso se puede usar para que se ejecute una vez por semana.
- @daily: para todos los días.
- @midnight: en este caso se daría todas las noches a las doce.
- @hourly: esta cadena servirá para que se dé durante el primer minuto de cara hora del día.
Herramientas para Cron
Si buscamos automatizar ciertos aspectos en las tareas y de este modo evitar errores, podemos encontrarnos con algunas herramientas donde podremos escribir en este formato cron. Además, estas opciones no harán falta ni instalarlas, ya que se podrá hacer uso de estas alternativas a través de Internet, incluso, en la mayoría de los casos no hará falta ni un registro previo. Por tanto, estas son las herramientas para Cron que puedes usar en cualquier momento:
- Crontab Guru: Se trata de un editor rápido y sencillo para crear expresiones de programación cron. Nos facilita alertas en tiempo real acerca de los posibles errores o inconvenientes que se puedan presentar a la hora de crear estas expresiones. Y no solamente esto, sino que te será de ayuda en diferentes momentos y todo gracias a que te ofrece diferentes ejemplos comunes o hasta consejos y trucos para que puedas entender diferentes opciones. Todo con el objetivo de que los usuarios puedan dar respuesta a sus posibles dudas.
- Cron Job Generator: Con esta herramienta podremos crear y programar diferentes secuencias de comandos para que estos se ejecuten a una hora predeterminada. Por otro lado, hay que tener en cuenta que esta herramienta en particular te da la oportunidad de realizar distintas tareas ya con sus ajustes preconfigurados que se pueden ir repitiendo en diferentes intervalos de tiempo. Además de que estas tareas se pueden personalizar sin problemas, al igual que se ofrece la alternativa de fijar fecha y hora para su ejecución.
- EasyCron: Nos permite programar tareas para llamar a URL específicas en diferentes intervalos de tiempo y momentos concretos. Nos facilitará la administración de trabajo cron con un panel de usuario a nuestra disposición y programar labores de acuerdo con fecha y hora configurada en nuestro sistema. También podremos ver registros de la ejecución de cada tarea y el envío de avisos por correo electrónico. Estas notificaciones, es posible establecer condiciones para que sean enviadas, como puede ser cada vez que se ejecuta o cuando ocurre algún fallo. Otra de sus funciones es el registro que pueden generar sus scripts durante las ejecuciones periódicas, estas las guardar para poder realizar un análisis posterior. Estos ficheros también se pueden generar con ciertos filtros, como por ejemplo, uno dedicado a los fallos que pueden ocurrir.
- KDE Cron o KCron: dentro de las diferentes herramientas disponibles esta aplicaciójn gráfica para usuarios dentro del entorno de escritorio KDE es una de las opciones que se pueden usar en cualquier momento. Hay que tener en cuenta que llega a permitir que los usuarios puedan generar, modificar y hasta eliminar las tareas sin que tengan que interacturar de forma directa con el archivo crontab. Además, una de sus características principales es que ofrece una interfaz visual en la que se pueden elegir las horas, días y fechas. Y hasta permite definir el comando o script que se quiera ejecutar. Por lo que su uso es recomendable para aquellas personas que prefieran hacer uso de una interfaz gráfica en lugar de llegar a trabajar desde la línea de comandos.
- Cron Maker: esta es otra de las herramientas para Cron a las que puedes sacar un gran partido. En este caso, lo cierto es que estás ante una opción que es muy parecida a EasyCron, la anterior herramienta. Estamos ante una herramienta que cuenta con una app específica sobre la biblioteca de código abierto de Quartz. De hecho, es una de las opciones que puedes usar si quieres crear expresiones de scripts para Cron sin tener que descargar nada, ya que esta herramienta está disponible online.
La última aplicación descrita, es sin duda la más completa de todas ellas a nivel de funciones, pero si hay que recalcar, que las otras dos son más sencillas de usar y de entender, pero tienen ciertas limitaciones a la hora de generar lo que necesitamos.
Logs en Cron
Con Cron tenemos la posibilidad de almacenar en un archivo las logs. Pero este puede resultar un poco lioso, ya que no solo se van a guardar las que a nosotros nos interesen. Si no que se guardarán todas ellas. En todo caso, es posible crear comandos para poder filtrar todo ese contenido. Si bien la información no va a ser todo lo detallada que nos gustaría, nos sirve para disipar alguna posible duda que podamos tener, o para buscar algún problema que se está produciendo.
El archivo, por lo general se llama: /var/log/syslog
Tipos de archivos de configuración cron
En el caso de cron, nos podemos encontrar con dos tipos de archivos de configuración, estos son:
- Crontab de sistema UNIX / Linux: Este nos requiere privilegios de root, pues por lo general se utiliza para servicios del propio sistema o trabajos que pueden alcanzar una importancia crítica para el mismo. A mayores, también requiere un nombre de un usuario, con el cual procederá a ejecutar los comandos, de esta forma le damos a crontab a ejecutar comandos como cualquier usuarios en el sistema.
- El usuario crontab: Es posible que un usuario pueda instalar sus propios trabajos usando el comando crontab. Pero también necesita un campo con el comando a ejecutar, y de nuevo se ejecutan como un usuario, pero en este caso, tiene la peculiaridad de que solo podrá ser lanzado por el usuario que creó el crontab. De esta forma, todos los usuarios pueden disponer de su propio archivo crontab, se almacenan en /var/spool/cron/crontabs, y no están destinados a ser editados de forma directa. Para ello tendremos que usar el comando crontab de forma que editamos o configuramos los trabajos propios, o creamos nuevos cron.
Impacto en el rendimiento
Llegados a este punto, es probable que ya pueda ver todos los beneficios que nos proporcionan este tipo de funciones. Pero esto es algo que se debe hacer con cuidado, siendo algo que va más allá que todas las configuraciones que podemos lanzar en los equipos. Tiene que ver con el rendimiento de los mismos. Cron y Crontab pueden tener un impacto en el rendimiento del dispositivo, con efectos negativos. Estos servicios de programación de tareas en los sistemas operativos de Unix y Linux, pueden automatizar un montón de procesos. Pero es algo con lo que no podemos pasarnos, ya que pueden tener efectos en actualizaciones de bases de datos o en relación con las copias de seguridad. Lo cual necesita cierto rendimiento en algunos casos.
Cuando creamos muchas reglas de cron y crontab, el sistema se puede ver afectado de diferentes formas. Estas son:
- Consumo de recursos: Todas las tareas que tiene un equipo programadas, se ejecutan de forma automática cuando llega el momento programado. Esto puede hacer que el equipo tenga un pico de consumo en la CPU y la memoria RAM. Si el dispositivo está ejecutando alguna tarea muy pesada, es posible que no nos interese que algo entre a consumir recursos. Así como si se ejecutan muchas órdenes de forma simultánea, puede verse mermado el rendimiento de forma generalizada.
- Sobrecarga en la red: Cuando las tareas que programamos tienen a la conexión de red involucrada, como pueden ser las transferencias de datos, podemos afectar a la propia red. Esto puede ocupar ancho de banda, como efecto principal. Y sin olvidarnos del consumo de recursos en la red y el equipo, es posible que en ocasiones aumenta la latencia y el ping.
- Conflicto de tareas: Al programar muchas tareas de forma simultánea, hay alguna posibilidad de que llegue a contradecirse alguna. Esto genera conflictos, que afectan directamente al rendimiento del equipo, y en algunos casos a la red en donde estamos conectados. Por ejemplo, dos tareas que se ejecutan a la vez sobre un archivo, con tareas diferentes, puede generar este tipo de conflicto.
Mejoras de rendimiento
Como puedes ver, Cron Y Crontab son herramientas muy útiles para automatizar tareas. Y aunque no son funciones que van a consumir demasiados recursos, es algo que podemos prevenir un poco con ellas mismas. Resumiendo, podemos crear tareas que se encarguen de mantener el equipo en el mejor estado posible en cuanto a rendimiento de forma generalizada. Para ello podemos empezar por una tarea, la cual se encargue de limpiar de forma regular la memoria caché del sistema. Esta se puede llenar con archivos temporales, y restos de aplicaciones eliminadas que ya no necesitamos. Y el espacio que ocupan es muy valioso y puede ralentizar el sistema. Por lo cual, limpiarla de forma regular es muy recomendable. Y si se puede hacer mediante una tarea automática, mucho mejor.
Otro muy buen uso, es programar las actualizaciones del sistema, junto con las aplicaciones que contiene. Estas actualizaciones suelen contener no solo mejoras de seguridad o nuevas funcionalidades, sino que los desarrolladores también trabajan mucho en el rendimiento de sus aplicaciones y sistema operativos. Utilizar una tarea para que se mantengan actualizados, puede hacer que nuestro equipo funcione mejor. La mejor forma es programarla en horas que no se utilice el sistema. De este modo, no supondrá un corte en la productividad. Del mismo modo, podemos crear automatizaciones, que se encarguen de cerrar aplicaciones que no estamos utilizando por un tiempo definido. Esto dejará más espacio a las demás, y funcionarán mejor.
Pero eso no es todo, sino que también vamos a poder realizar labores de monitorización y registro, sobre el rendimiento del sistema. Por ejemplo, se pueden programar scripts que se encarguen de registrar de forma regular la utilización de la CPU, la memoria del disco curo, y luego dar uso de esos datos para poder identificar problemas y ponerles solución lo ante posibles. De este modo, también podremos realizar una gestión de recursos mucho mejor. Programando tareas de baja prioridad, para que solo se ejecuten cuando la utilización del equipo es baja durante un tiempo. Así tendremos todo el rendimiento posible cuando sea necesario para otras tareas.
Desventajas de usar Cron y Crontab
Pese a que para la programación de tareas periódicas en sistemas Unix/Linux ofrece una gran flexibilidad, también tiene una serie de desventajas que hacen que no sea la mejor opción para todos.
- Complejidad de la configuración: Si no conoces mucho este tipo de comandos y usos, te resultará difícil controlarlo correctamente, sobre todo si es tu primera vez con Linux, y no estás acostumbrado a usar comandos para todo.
- Dependencia del sistema: Pese a que te sirvan en un momento dado, aprenderlos no será tan útil como crees, ya que solo lo tendremos en este sistema operativo, y, por tanto, ni en MacOS ni en Windows podrás utilizarlo, algo que limita a la mayoría de usuarios.
- Seguridad: Si los archivos de configuración de cron no están bien protegidos, podrían ser objeto de manipulación maliciosa por parte de usuarios no autorizados, lo que podría comprometer la seguridad del sistema, por lo que hay que tener precaución.
- Muy sencillo: Pese a que es excelente para tareas simples puede no ser la mejor opción para tareas más complejas. Algo que también asociamos a problemas de escalabilidad futura.
- Dificultad para gestionar errores: La detección y solución de tareas automatizadas se hace complicada sin mucha información necesaria que Cron no nos proporciona, aunque sí algunas de sus alternativas que veremos ahora, por lo que tendrás que decidir cuál es mejor para el uso que quieres darle.
Alternativas a Cron y Crontab
Ahora que ya estamos familiarizados con Cron y Crontab, vamos a ver algunas alternativas que podemos utilizar para realizar tareas similares. Todas ellas tienen sus pequeñas peculiaridades, a pesar de realizar funciones diferentes.
La primera que nos vamos a encontrar es Anacron. Este no necesita que un equipo se encuentre siempre funcionando, y se puede ejecutar sus tareas para que se ejecuten en cualquier momento. En el caso de que el equipo esté apagado, la tarea se ejecutará cuando se encienda de nuevo. Este paquete está disponible en muchos paquetes de Linux, pero se puede instalar en caso de no disponer de él.
Fcron es otra de las alternativas. Este tampoco requiere que el equipo esté en funcionamiento, y puede trabajar con tareas asignadas a una hjora y minuto específico. Pero en este caso, será necesario realizar la instalación mediante un archivo de código fuente, y una vez compilado, podremos utilizarlo.
Algo más desconocido es hcron. El cual tiene algunas características interesantes, como por ejemplo la oportunidad de establecer etiquetas para organizar todo el trabajo correctamente, administrar una red, o directamente los archivos de usuarios. Lo cual también genera mejoras en la seguridad. Este paquete también es necesario instalarlo, pero si hay alguna distribución que lo incorpora de serie.
Pero si queremos realizar estas tareas con algún otro software externo, podemos hablar de Mcron, el cual es muy similar a los anteriores. Incluso así, tiene sus diferencias, las cuales pueden hacerlo muy útil para algunos administradores, y es que a diferencia de los anteriores, este permite redefinir la programación de tareas usando la reconstrucción de trabajos desde un punto inicial. Su instalación es muy sencilla y una vez instalado, podemos empezar a utilizarlo como nuestro programador de tareas, puesto que no es habitual que se encuentre incorporado de serie en ningúna versión.
Si buscas una alternativa a Cron que se ejecute en el sistema operativo de Windows, tienes algunas como WinCron, VisualCron o Advanced Task Scheduler, las cuales tienen funciones similares y con interfaz gráfica y botones, lo que hace mucho más sencillo su uso si no eres un experto en la materia.
Nivel de complejidad
Como puedes ver, estas herramientas se pueden utilizar en los sistemas operativos de Linux y Unix, y permiten la programación de tareas las cuales se deben ejecutar en momentos específicos. Estas son muy útiles para poder realizar una automatización de tareas, así como para que nuestro sistema se mantenga en el mejor estado posible. A pesar de que son herramientas que resultan sencillas, el nivel de complejidad que podemos alcanzar con ellas es muy alto.
En un principio, Cron se ejecuta en segundo plano, y realiza comprobaciones de forma continua de la configuración. En estos archivos es donde están especificadas las tareas que se deben llevar a cabo, y el momento en el cual se deben ejecutar. Para escribirlas, se debe utilizar un formato especial de tiempo, el cual indica el momento concreto. En estos casos, especificando la hora a la cual se debe ejecutar. Por otro lado, con Crontab podemos disponer de una herramienta que permite que los usuarios puedan crear, editar y eliminar las tareas que tiene Cron programadas. Para acceder a esto, se utiliza el comando crontab. Crontab abrirá los archivos en los editores de texto predeterminados, para que el usuario pueda modificar esa programación.
Según vamos añadiendo nuevas tareas a los archivos de configuración de Cron y Crontab, la complejidad del sistema aumentará. Por otro lado, debemos tener en cuenta, que, si programamos tareas con altas frecuencias, pueden consumir muchos recursos de los equipos. Afectando así al rendimiento del sistema. Por lo cual es importante tener algunos conocimientos acerca de cómo funciona todo esto, y así programar tareas que sean útiles y eficientes, evitando así todos los problemas que puedan llegar a aparecer. Como en todo lo relacionado, mantener la seguridad y estabilidad del sistema, es algo muy importante. Sobre todo, si se trata de equipos profesionales, donde toda tarea que se ejecuta en el mismo puede ser de gran importancia.
Cron y Crontab para empresas
Con estas dos funciones, estamos ante un sistema perfecto para implementar en el sector empresarial. Esto nos ayudará a programar tareas que pueden resultar repetitivas, por lo cual los administradores pueden estar pendientes de otras cosas. Estos proporcionan una forma muy eficiente de programar la ejecución de diferentes scripts, comandos y también programas. Debido al alto grado de personalización, podremos programar prácticamente lo que sea necesario y sea beneficioso para la organización y las tareas que se realizan en su entorno.
Estos sistemas ofrecen varias ventajas a nivel empresarial. La primera es la que comentamos, la capacidad de programar esas tareas más tediosas para que no sea necesaria la intervención manual. Lo cual ahorra tiempo, y reduce el riesgo de que aparezcan posibles errores relacionados con errores humanos. Algunos de los métodos más comunes son para copias de seguridad, actualizaciones de software, generar informes o la ejecución de procesos de mantenimiento. Pero a todo esto también le sumamos la flexibilidad para la programación. Todos los beneficios que hemos visto previamente de cron y crontab, los tendremos disponibles a nivel empresarial. Por lo cual las opciones para crear este tipo de automatizaciones son muy abundantes.
Todo ello puede traer beneficios indirectos para la empresa. Empezando por la eficiencia y la productividad, sobre todo al liberar a los empleados de tareas más rutinarias y repetitivas. Esto hace que se puedan centrar en tareas que pueden resultar más estratégicas, y con un valor muy alto para la compañía. Estas automatizaciones, hacen que la carga de trabajo manual sea menor, por lo cual los recursos de la empresa se van a optimizar desde el primer momento. En todo caso, implementar estos sistemas requiere conocimientos. Por lo cual se debe estudiar detenidamente, y ver en qué puntos puede ser mucho más eficaz.
Programar tareas en Windows
Seguramente en algún punto del post, te has preguntado si todo esto es compatible con Windows. Pero incluso con las posturas entre los dos sistemas operativos más cercanas que nunca, lo cierto es que Windows cuenta con su propio gestor de programación de tareas. Se trata de un método más sencillo, por interfaz gráfica, y tan eficaz como estos dos comandos. Realizar tareas repetitivas, establecer horarios, recordatorios, todo se puede configurar de igual forma en Windows.
El proceso es sencillo, simplemente tendremos que ir a la barra de búsqueda de Windows, y escribir «Programar tareas», y entrar. Una vez abierta veremos todas las opciones que tenemos disponibles, las cuales nos dan bastante libertad de edición. A lo cual podemos añadir scripts en archivos bat, lo cual hace de todo este proceso algo muchísimo más completo.
Según navegamos por todos los menús, vemos que Windows nos facilita mucho el proceso, indicándonos dónde poner cada cosa hasta finalizar el proceso, el cual puede ser tan creativo como queramos. Una vez finalizado, también nos dará algunas opciones para realizar la tarea programada. En este momento, la tarea estará lista para ser ejecutada cuando hayamos establecido. De lo contrario, tendremos que acudir a borrarla, y simplemente no se ejecutará nunca más.
Con respecto a los archivos .bat, en los cuales podemos programar también tareas, y estos a su vez combinarlos con otras tareas, puede resultar un poco más complicado. Esto es porque se requieren ciertas nociones de programación, las cuales pueden ser tan extensas como queramos. De nuevo la creatividad puede jugar un papel muy importante en todo esto. Lo que debemos tener en cuenta, es que tanto con archivos .bat como con el programador de tareas, podemos automatizar nuestro equipo hasta puntos muy elevados, y a la vez complejos.
Cómo has podido ver, programar la ejecución de tareas no es nada complicado y se puede realizar de forma rápida si se tiene claro todo lo mencionado en este tutorial. Hemos mostrado cómo funciona Cron y Crontab, dos opciones que vas a tener disponibles para que una tarea se ejecute en un momento determinado de tiempo. Si usas alguna distribución de Linux, vas a poder utilizarlos sin problemas. Podrás adaptar el tiempo y la automatización de procesos según necesites.