Cron
Programar tareas con cron | |
---|---|
Título | Programa tareas por usuario o sistema |
Cabecera3 | |
Enlace del manual de redhat | https://www.redhat.com/sysadmin/linux-cron-command |
Introducción
Cron es una herramienta de administración de tiempo en sistemas operativos Unix y Unix-like, que permite a los usuarios programar tareas para que se ejecuten automáticamente en momentos específicos, ya sea una vez, de forma recurrente o en momentos predefinidos. Crontab, por otro lado, es el archivo utilizado por el sistema para almacenar y administrar las listas de tareas programadas por los usuarios.
Funcionamiento de Cron
Cron se ejecuta en segundo plano y verifica periódicamente el archivo crontab para encontrar tareas programadas. Cuando encuentra una tarea que debe ejecutarse, la inicia automáticamente. Esto permite a los usuarios automatizar tareas repetitivas, como copias de seguridad, procesamiento de archivos, envío de informes, entre otras.
Cada línea de un archivo crontab representa un trabajo y es compuesto por una expresión CRON, seguida por un comando shell para ejecutarse.
Formato del fichero de crontab
De entre muchos ficheros, quiero comenzar con el fichero genérico de crontab, ubicado en /etc/crontab, en el que podemos añadir las tareas programadas por el sistema especificando el usuario que las ejecuta, este fichero no está disponible por defecto en las estaciones de trabajo.
El fichero de crontab tiene el siguiente formato:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
- For details see man 4 crontabs
- Example of job definition:
- .---------------- minute (0 - 59)
- | .------------- hour (0 - 23)
- | | .---------- day of month (1 - 31)
- | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
- | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
- | | | | |
- * * * * * user-name command to be executed
En el que la línea más importante es la última que indica el tiempo de ejecución, el usuario que lo ejecuta y el comando.
crontab como gestor de tareas por usuario
Las distribuciones actuales permiten que todos los usuarios puedan gestionar sus propias tareas, obviamente, según el usuario tendrán acceso y preferencias, por ejemplo, una tarea programada por "root" tiene prioridad sobre el resto.
Las tareas se gestionan con el comando: crontab Para poder editar se utiliza la opción: crontab -e Para poder listar las tareas del usuario sin editar podemos poner: crontab -l
Y para ver las tareas de otro usuario, por ejemplo que "root" vea las tareas del usuario "suport"
sudo -u suport crontab -l
Para borrar las tareas tenemos la opción de editarlas como antes he mostrado o ejecutar:
crontab -r
Que borra todas las tareas.
Una vez están editadas las tareas no hace falta reiniciar el servicio ya que se aplican al momento.
IMPORTANTE - es necesario recordar que NO es lo mismo ejecutar el comando "crontab -e" que "sudo crontab -e" , el primer comando lo ejecuta el usuario actual mientras que el segundo lo ejecuta root.