En este artículo, vamos a revisar y ver cómo podemos programar y ejecutar tareas de Linux en segundo plano automáticamente en intervalos regulares usando el comando Crontab.
Tratar con una tarea frecuente manualmente es una tarea desalentadora para los administradores del sistema y dichas tareas pueden programarse y ejecutarse automáticamente en segundo plano sin intervención humana utilizando el demonio cron en Linux o un sistema operativo similar a Unix.
Puede automatizar el respaldo del sistema Linux, programar actualizaciones y sincronización de archivos, entre otros, utilizando el demonio Cron, que se utiliza para ejecutar tareas programadas desde la línea de comandos o mediante herramientas en línea para generar trabajos cron.
Cron se activa cada minuto y verifica las tareas programadas de forma contable: Crontab (CRON TABle) es una tabla donde podemos programar este tipo de tareas repetitivas.
Sugerencias: Cada usuario puede tener su propio crontab para crear, modificar y eliminar tareas. Por defecto, cron está habilitado para los usuarios, sin embargo, podemos restringir usuarios añadiendo una entrada en el archivo /etc/cron.deny.
Crontab en Linux
El archivo Crontab consiste en comandos por línea y tiene seis campos en realidad, separados por espacio o tabulación. Los cinco primeros campos representan la hora de ejecución de las tareas y el último campo es para el comando.
- Minuto (valores entre 0-59)
- Hora (valores entre 0-23)
- Día del Mes (valores entre 1-31)
- El mes del año (toma valores entre 1-12 o Ene-Dic, también puedes usar las tres primeras letras del nombre de cada mes, por ejemplo Ene o Jun).
- Día de la semana (toma valores entre 0-6 o Dom-Sáb, aquí también puedes usar las tres primeras letras del nombre de cada día, por ejemplo Dom o Mié).
- Comando: La /ruta/al/comando o script que deseas programar.
1. Listar Entradas de Crontab
Lista o gestiona la tarea con el comando crontab con la opción -l
para el usuario actual.
# crontab -l 00 10 * * * /bin/ls >/ls.txt
2. Editar Entradas de Crontab
Para editar la entrada de crontab, utiliza la opción -e
que se muestra a continuación. El siguiente ejemplo abrirá trabajos programados en el editor VI. Haz los cambios necesarios y sal con las teclas :wq
para guardar la configuración automáticamente.
# crontab -e
3. Listar Trabajos Cron Programados del Usuario
Para listar los trabajos programados de un usuario particular llamado tecmint utilizando las opciones -u
(Usuario) y -l
(Lista).
# crontab -u tecmint -l no crontab for tecmint
Nota: Solo el usuario root tiene privilegios completos para ver las entradas de crontab de otros usuarios. Los usuarios normales no pueden ver los de otros.
4. Eliminar Entrada de Crontab
Precaución: Crontab con el parámetro -r
eliminará los trabajos programados completos sin confirmación de Crontab. Utiliza la opción -i
antes de eliminar el crontab del usuario.
# crontab -r
5. Solicitar Confirmación Antes de Eliminar el Crontab
El comando crontab con la opción -i
solicitará confirmación al usuario antes de eliminar el crontab del usuario.
# crontab -i -r crontab: really delete root's crontab?
6. Caracteres Especiales Permitidos (*, -, /, ?, #)
- Asterisco (*) – Coincide con todos los valores en el campo o cualquier valor posible.
- Guion (-) – Para definir un rango.
- Barra (/) – Campo 1 /10 significa cada diez minutos o incremento de rango.
- La Coma (,) – Para separar elementos.
7. Programación de Cron en Todo el Sistema
A system administrator can use the predefined cron directory as shown below.
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. Programar una Tarea para un Momento Específico
Las siguientes tareas eliminan archivos y directorios vacíos de /tmp a las 12:30 a. m. diariamente. Debes mencionar el nombre de usuario para ejecutar el comando crontab. En el siguiente ejemplo, el usuario root está ejecutando una tarea cron.
# crontab -e 30 0 * * * root find /tmp -type f -empty -delete
9. Cadenas Especiales para Programaciones Comunes
Strings | Meanings |
---|---|
@reboot | The command will run when the system reboots. |
@daily | Once per day or may use @midnight. |
@weekly | Once per week. |
@yearly | Once per year. we can use the @annually keyword also. |
Debes reemplazar cinco campos del comando cron con palabras clave si deseas usarlo.
10. Múltiples Comandos con Doble Ampersand(&&)
En el siguiente ejemplo, command1 y command2 se ejecutan diariamente.
# crontab -e @daily <command1> && <command2>
11. Desactivar Notificaciones por Correo Electrónico.
Por defecto, cron envía correo electrónico a la cuenta de usuario que ejecuta la tarea cron. Si deseas desactivarlo, añade tu tarea cron de manera similar al ejemplo siguiente. Usando la opción >/dev/null 2>&1 al final del archivo redireccionará toda la salida de los resultados cron a /dev/null.
[root@tecmint ~]# crontab -e * * * * * >/dev/null 2>&1
conclusión: La automatización de tareas puede ayudarnos a realizar nuestras actividades de manera más eficiente, sin errores y de forma eficaz. Puedes consultar la página de manual de crontab para obtener más información escribiendo el comando ‘man crontab‘ en tu terminal.
Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/