Editado 4 hace meses por ExtremeHow Equipo Editorial
FedoraCronProgramación de TareasAutomatizaciónLínea de comandosTerminalAdministración de sistemasConfiguraciónSoftwareComputadoras
Traducción actualizada 4 hace meses
La programación de tareas es una parte importante de la gestión de servidores y la automatización en un entorno Linux. En Fedora, que es una distribución de Linux altamente popular, una de las herramientas más comunes para la programación de tareas es cron. Cron es un programador de tareas basado en tiempo en sistemas operativos similares a Unix, que puede ejecutar automáticamente scripts o comandos en intervalos o momentos especificados. Puedes usarlo para automatizar el mantenimiento del sistema, copias de seguridad, monitoreo o cualquier tarea repetitiva. Esta guía integral te guiará a través de cómo programar tareas usando cron en Fedora.
Cron utiliza un archivo de configuración llamado crontab (abreviatura de cron table) para gestionar la programación de tareas. Cada usuario en el sistema puede tener su propio archivo crontab. En el archivo crontab, cada línea representa una tarea programada. Cron verifica el contenido del crontab para cada usuario y ejecuta las tareas definidas en él. Estas tareas consisten en un comando y un horario.
La sintaxis básica para una entrada de crontab es:
* * * * * command_to_run
Esta sintaxis significa:
Un ejemplo de cómo podría verse esto:
30 2 * * 1 /home/user/backup.sh
Este trabajo cron ejecutará el script /home/user/backup.sh
cada lunes (1 representa lunes) a las 2:30 AM. Veamos cada parte en más detalle para ver cómo podemos usar esta herramienta a nuestro favor.
La mayoría de las instalaciones de Fedora tendrán el servicio cron instalado por defecto. Si por casualidad no está instalado, puedes añadirlo fácilmente. Para asegurarte de que tienes cron instalado, usa el siguiente comando:
sudo dnf install cronie
El comando anterior instalará el demonio cron, que es responsable de gestionar los trabajos cron. Después de la instalación, asegúrate de que el servicio esté funcionando:
sudo systemctl start crond
sudo systemctl enable crond
El comando start
arrancará el servicio cron, mientras que el comando enable
asegura que se inicie automáticamente al arrancar el sistema.
Los usuarios pueden crear un archivo crontab para programar tareas. Esto se puede hacer escribiendo el siguiente comando:
crontab -e
El comando anterior abre un editor donde puedes escribir tus trabajos cron. Si estás usando crontab por primera vez, puede que te pida que elijas un editor. Elige tu editor de texto favorito (como nano, vim, etc.).
Al editar tu crontab, es importante asegurar que cada comando de trabajo cron esté especificado correctamente en la sintaxis descrita anteriormente. Después de agregar tus tareas, guarda el archivo y sal del editor. Cron registrará automáticamente los cambios.
Ahora que sabemos cómo acceder al archivo crontab y crear trabajos cron, veamos algunos ejemplos comunes:
0 * * * * /home/user/hourly-task.sh
Esto ejecutará hourly-task.sh
desde el directorio home al inicio de cada hora.
30 14 1 3 * echo "Remember to check logs" >> /home/user/notes.txt
Este comando añadirá una nota recordatoria a notes.txt
a las 2:30 PM el 1 de marzo.
0 0 * * 0/2 /home/user/cleanup.sh
En esta configuración, cleanup.sh
se ejecuta cada dos domingos a la medianoche.
Cron no carga variables de entorno desde los archivos .bashrc
, .profile
o similares del usuario. Por lo tanto, si su script depende de variables de entorno específicas, puede definirlas directamente en su archivo crontab antes del trabajo cron:
PATH=/usr/local/bin:/bin:/usr/bin:/home/user/bin 30 1 * * * /home/user/some_command --options
Cada trabajo cron se ejecuta con un entorno específico, por lo que es importante asegurarse de que las rutas y variables correctas estén configuradas en el archivo crontab.
Cron permite el uso de algunas cadenas en lugar de los cinco campos de hora y fecha, lo que simplifica la programación:
@reboot
: Ejecutar una vez después del inicio.@yearly
o @annually
: Ejecutar una vez al año, i.e., 0 0 1 1 *
.@monthly
: Ejecutar una vez al mes, i.e. 0 0 1 * *
.@weekly
: Ejecutar una vez a la semana, i.e. 0 0 * * 0
.@daily
: Ejecutar una vez al día, i.e. 0 0 * * *
.@hourly
: Ejecutar una vez por hora, i.e. 0 * * * *
.Estas cadenas predefinidas hacen la entrada crontab más legible y rápida de escribir.
Por ejemplo, para ejecutar el script daily-maintenance.sh
una vez por día, podrías usar:
@daily /home/user/daily-maintenance.sh
Por defecto, cron envía la salida (tanto stdout como stderr) al correo del usuario en la máquina local. Si deseas redirigirla a un archivo, puedes modificar el comando de la siguiente manera:
* * * * * /home/user/script.sh > /home/user/logfile 2>&1
Aquí, 2>&1
redirige el error estándar (stderr) a la salida estándar (stdout), y la salida se escribe en logfile
.
Para listar todos los trabajos cron para el usuario actual, escribe:
crontab -l
Para eliminar el archivo crontab para el usuario actual, usa:
crontab -r
La depuración puede ser difícil porque cron tiene su propio entorno y no carga la configuración del shell del usuario por defecto. Aquí hay algunos pasos para solucionar problemas con tus trabajos cron:
/var/log/cron
o usando el comando journalctl
en Fedora.Si bien la programación básica maneja la mayoría de las tareas, se pueden emplear técnicas avanzadas para necesidades de programación más complejas:
Puedes especificar una lista de valores para cualquier campo en crontab. Por ejemplo, para ejecutar una tarea los días primero y quince de cada mes:
0 0 1,15 * * /home/user/payroll.sh
Los valores de paso te permiten especificar intervalos dentro de rangos. Por ejemplo, para ejecutar una tarea cada 10 minutos:
*/10 * * * * /home/user/check-system.sh
El símbolo */10
indica "cada diez minutos".
Cron es una herramienta poderosa y versátil para la automatización de tareas, disponible en Fedora y muchos otros sistemas similares a Unix. Al establecer intervalos de tiempo con precisión y el scripting de tareas repetitivas, los administradores de sistemas y los usuarios pueden aumentar significativamente la productividad y la fiabilidad del sistema. Entender y utilizar las capacidades de cron puede reducir en gran medida la carga de trabajo manual mediante la eficiente programación de tareas que de otro modo requerirían una atención y una intervención constantes.
Con esta guía, ahora deberías tener una comprensión sólida de cómo configurar y gestionar trabajos cron en Fedora. Ya sea que estés haciendo programación básica, usando variables de entorno, redirigiendo salidas o usando técnicas de programación avanzadas, cron ofrece muchas opciones para personalizar la gestión de tareas a tus necesidades específicas.
Explora más el paquete cronie y adéntrate en opciones y posibilidades adicionales experimentando con diferentes trabajos que ayudarán a agilizar las operaciones. La automatización es clave para una gestión efectiva del sistema, y dominar cron es una habilidad esencial para los usuarios de Linux. Sigue iterando y refinando tu programación de tareas, y aprovecha el poder de cron para mantener tu sistema funcionando de manera fluida y eficiente.
Si encuentras algo incorrecto en el contenido del artículo, puedes