Al principio de mi viaje por Linux, llegué a apreciar las numerosas utilidades de línea de comandos del sistema operativo y la forma en que simplificaban las tareas regulares. Por ejemplo, hacer copias de seguridad de las aplicaciones en mi servidor de Windows con frecuencia requería costosos paquetes de software complementarios. Por el contrario, el tar
El comando hace que la copia de seguridad de Linux sea relativamente fácil, y también es potente y confiable.
Sin embargo, al hacer una copia de seguridad del sistema de correo electrónico de nuestro distrito escolar, me enfrenté a un desafío diferente. Las copias de seguridad no podían realizarse durante la jornada laboral o temprano en la noche porque la gente estaba usando el sistema. La copia de seguridad tenía que realizarse después de la medianoche y tenía que ser fiable. Estaba acostumbrado al Administrador de tareas de Windows, pero ¿qué iba a usar en Linux? Fue entonces cuando aprendí sobre cron.
Programación de tareas en Linux con cron
Cron es un demonio que se utiliza para ejecutar comandos programados automáticamente. Aprender a usar cron requirió algo de lectura y experimentación, pero pronto estaba usando cron para cerrar nuestro servidor de correo electrónico, hacer una copia de seguridad de los datos en un archivo tar comprimido y luego reiniciar el servicio de correo electrónico a las 3 a.m.
Los comandos para un trabajo cron se almacenan en el archivo crontab en un sistema Linux, que generalmente se encuentra en /etc/crontab. Muestre el contenido de su archivo crontab con $ crontab -l
.
Edite el archivo crontab con $ crontab -e
.
Algunos sistemas utilizan de forma predeterminada el editor Vi para la edición de cron. Puede anular esta configuración usando variables de entorno:
$ EDITOR=nano crontab -e
Esto le permite usar el editor nano para editar su crontab personal (si aún no tiene uno, se crea uno automáticamente).
Todos los comandos crontab tienen parámetros indicados con un asterisco hasta que inserta un valor entero. El primero representa los minutos, luego las horas, el día del mes, el mes del año y finalmente el día de la semana.
Los comentarios van precedidos de un hash. Cron ignora los comentarios, por lo que son una excelente manera de dejar notas sobre lo que hace un comando y por qué es importante.
Un trabajo cron de muestra
Suponga que desea escanear su directorio de inicio en busca de virus y malware con clamscan todos los lunes de la semana a las 10 a. m. También desea hacer una copia de seguridad de su directorio de inicio todas las semanas los martes a las 9 a.m. El uso de archivos cron y crontab garantiza que el mantenimiento de su sistema se realice todas las semanas, ya sea que recuerde ejecutar esas utilidades o no.
Edite su archivo crontab para incluir lo siguiente, usando su propio nombre de usuario en lugar de "don" (mi nombre de usuario):
# Scan my home directory for viruses
0 10 * * 1 clamscan -ir /home/don
# Backup my home directory
0 9 * * 2 tar -zcf /var/backups/home.tgz /home/don
Si está utilizando el editor nano, guarde su trabajo con Ctrl+O para escribir el archivo y Ctrl+X para salir del editor. Después de editar el archivo, use crontab -l
para enumerar el contenido de su archivo cron para asegurarse de que se haya guardado correctamente.
Puede crear trabajos crontab para cualquier trabajo requerido en su sistema. Esto aprovecha al máximo el demonio cron.
Programación desde la línea de comandos de Linux
No es ningún secreto que la parte más difícil de cron es encontrar los valores correctos para los asteriscos principales. Hay sitios web, como crontab.guru, que traducen dinámicamente el tiempo de cron en traducciones legibles por humanos, y Opensource.com tiene una hoja de trucos de cron que puede descargar para ayudarlo a mantener las cosas claras.
Además, la mayoría de los sistemas cron modernos cuentan con accesos directos a valores comunes, que incluyen:
@hourly
:Ejecutar una vez por hora (0 * * * *)@daily
:Ejecutar una vez al día (0 0 * * *)@weekly
:Ejecutar una vez por semana (0 0 * * 0)@monthly
:Ejecutar una vez al mes (0 0 1 * *)@reboot
:Ejecutar una vez después de reiniciar
También hay alternativas a cron, incluido anacron para trabajos que desea ejecutar regularmente pero no de acuerdo con un cronograma específico, y el at
comando para trabajos puntuales.
Cron es un sistema de programación de tareas útil y es tan fácil de usar como editar texto. ¡Pruébalo!