Idioma
Categoría
Buscar

Cómo programar tareas en Linux usando Crontab: Ejemplos detallados

Establezca intervalos de programación personalizados, explore comandos esenciales, cambie el editor predeterminado, organice la programación de scripts por carpetas y vea los registros de eje

Cómo programar tareas en Linux usando Crontab: Ejemplos detallados
En Terminal Por Rudi Drusian Lange
Publicado el
Última actualización

Introducción

El nombre cron se deriva de la palabra griega para tiempo, chrono. Crontab es un archivo que contiene entradas de cron para ejecutarse en un momento especificado. Cron es muy útil para programar tareas repetitivas, automatizar el mantenimiento y la administración de un sistema.

Cada usuario del sistema tiene un crontab individual separado y los comandos programados dentro de él deben ejecutarse en el contexto de los permisos del usuario. Un usuario regular solo puede modificar su propio crontab, mientras que root puede modificar el crontab de cualquier usuario.

Crontab no realiza validación de errores, como errores de sintaxis o edición simultánea. Los errores solo se detectan durante la ejecución de los comandos programados.

Entorno de instalación

Este artículo se basó en Slackware Linux 15.0 y el paquete dcron-4.5. La mayoría de la información presentada aquí es aplicable a cualquier distribución, pero pueden existir pequeñas diferencias.

Ejemplos prácticos

Para editar el archivo crontab, use el comando crontab -e. Las líneas en blanco se ignoran y las líneas que comienzan con el carácter # se consideran comentarios.

formato ↓

formato-crontab

crontab

# ejecuta el comando 'date' cada minuto
* * * * * date

# ejecuta el comando cada 5 minutos
*/5 * * * * date

# ejecuta cada hora en el minuto 25 de cada hora
25 * * * * date

# ejecuta todos los días a las 6:10
10 6 * * * date

# ejecuta cada dos horas al inicio de la hora
0 */2 * * * date

# ejecuta cada minuto entre las 12 y las 13 horas
* 12 * * * date

# cada dos horas entre las 23 y las 7 horas, y nuevamente a las 8 horas
0 23-7/2,8 * * * date

# ejecuta a las 4:00 horas el 1 de enero
0 4 1 1 * date

# todos los días a las 11 horas y registra la salida del comando en el archivo date-output
0 11 * * * date >> /var/log/date-output 2>&1
  • * ➟ todos (minutos, horas, días, meses)
  • 0-5 ➟ define un intervalo, 0, 1, 2, 3, 4 y 5
  • 2,4,5 ➟ lista, 2, 4 y 5
  • */2 ➟ cada intervalo de 2  (minutos, horas, días, meses)

Comandos crontab

  • crontab -e ➟ abre el crontab para editar
  • crontab -l ➟ muestra el contenido del archivo crontab
  • crontab -d ➟ elimina el archivo crontab (o crontab -r dependiendo de la distribución)
  • crontab -e -u <usuario> ➟ edita el crontab de un usuario específico, debe ejecutarse como root. -u puede combinarse con otros parámetros, -l para listar, -d (o -r) para eliminar.

Eligiendo el editor

Crontab utiliza el editor especificado en las variables de entorno VISUAL o EDITOR. Si no se define ninguna, se usará el editor vi. Para cambiar el editor use:

$ Shell

# Cambia el editor a emacs
export EDITOR=emacs
crontab -e

# Para usar el editor elvis
export EDITOR=elvis
crontab -e

# Para usar el editor vi
export EDITOR=vi
crontab -e

El cambio anterior será válido durante la sesión. Al reiniciar, la variable perderá el valor definido. Para hacerlo permanente, coloque el comando export dentro del archivo ~/.bashrc.

Organizando por carpetas

El crontab de root está preconfigurado para ejecutar scripts colocados en directorios específicos periódicamente, según el nombre de la carpeta:

  • /etc/cron.hourly/ - Cada hora.
  • /etc/cron.daily/ - Una vez al día.
  • /etc/cron.weekly/ - Una vez a la semana.
  • /etc/cron.monthly/ - Una vez al mes.

Esto es útil para scripts que no requieren una programación específica pero necesitan ejecutarse regularmente. La configuración que permite este funcionamiento se puede verificar dentro del crontab del usuario root:

Crontab

# Ejecuta tareas cron cada hora 47 minutos después de la hora:
47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null

# Ejecuta tareas cron diarias a las 4:40 todos los días:
40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null

# Ejecuta tareas cron semanales a las 4:30 del primer día de la semana:
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null

# Ejecuta tareas cron mensuales a las 4:20 del primer día del mes:
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null

Si lo desea, puede cambiar las horas y días de ejecución. Por ejemplo, ejecutar los scripts 5 minutos después de la hora, en lugar de 47 minutos como estaba configurado originalmente. Recuerde que esta es una configuración basada en carpetas; para programaciones más precisas, debe crear la configuración individual para la ejecución de cada comando.

Recuerde que, al colocar un script en esta carpeta, debe asegurarse de que tenga permisos de ejecución configurados para que pueda ejecutarse.

Registro

Con el usuario root puede consultar el registro de cron en: /var/log/cron.

# Shell

tail -f /var/log/cron

Con un usuario regular es posible redirigir el error (stderr) a un archivo de registro en el directorio personal, usando el redireccionador 2>>.

Crontab

* * * * * ls /home/usuario/no-existe 2>> /home/usuario/crontab.log

Conclusión

La programación de tareas en Linux utilizando crontab es una herramienta poderosa que permite automatizar procesos, ahorrando tiempo y reduciendo el margen de error en las operaciones manuales. Con una configuración simple, los usuarios pueden programar comandos y scripts para que se ejecuten a intervalos regulares, garantizando el mantenimiento adecuado del sistema y la ejecución de tareas repetitivas. Al comprender los formatos y opciones de crontab, es posible personalizar los horarios según sea necesario, promoviendo una mayor eficiencia y organización.

Referencias

La principal fuente para este artículo fue el manual (man page) de crontab disponible en Slackware Linux. Se emplearon inteligencias artificiales para la corrección de errores gramaticales y semánticos, así como la optimización de la estructura textual y el vocabulario.

Este no es mi idioma original y no lo hablo muy bien. Utilicé mis pocos conocimientos y herramientas de traducción para redactar el texto de este artículo. Disculpe los posibles errores ortográficos o gramaticales, se agradecen sugerencias de correcciones y se pueden enviar al correo electrónico de contacto que se encuentra en el pie de página del sitio. Mi intención es compartir algunos conocimientos y espero que esta traducción sea lo suficientemente buena.