Crontab en Linux: con ejemplos y herramientas en tiempo real
Exploremos crontab, sus comandos y diversas operaciones asociadas.ated con Crontab.
Aprenderemos cómo programar tareas usando la utilidad cron y, por último, también discutiremos algunas de las herramientas en línea que nos ayudan a formatear y probar los comandos cron.
Natural
Crontab significa "tabla cron“. La palabra cron se ha tomado de la palabra griega Cronos es decir tiempo. Crontab es un demonio del sistema process eso será automáticoally realizar algunas tareas y trabajos según el tiempo programado.
Use cases
Crontab es útil para realizar diversas operaciones, como el manejo automático.ated copia de seguridad, archivos de registro rotativos, syncintercambiar archivos entre máquinas remotas y borrar carpetas temporales, etc. Crontab se puede usar para cualquier tipo de trabajo, pero se vuelve especialally útil cuando empezamos a lidiar con administracion del sistema tipo de trabajo.
Usando cron, un administrador puede programar un trabajo para que se ejecute en una hora y un día específicos.
Así que veamos cómo podemos configurar esto.
Sintaxis de Crontab
Para ejecutar una lista de comandos, la utilidad cron lee los archivos de configuración. Para interpretar las líneas en el crontab tablas de configuración, sigue una sintaxis de Crontab. Crontab tiene seis campos y los primeros cinco (1-5) campos definen el date y tiempo de ejecución. El último campo, es decir, el sexto campo, podría ser un nombre de usuario y/o tarea/trabajo/comando/script a ejecutar.
* * * * * COMANDO DE NOMBRE DE USUARIO / GUIÓN PARA EJECUTAR
│ │ │ │ │
│ │ │ │ │
│ │ │ │ | _________ Día de la semana (0 - 6) (0 es domingo, o use nombres)
│ │ │ |____________ Mes (1 - 12), * significa todos los meses
│ │ |______________ Día del mes (1 - 31), * significa todos los días
│ |________________ Hora (0 - 23), * significa cada hora
|___________________ Minuto (0 - 59), * significa cada minuto
Notas:
- El asterisco (*) se utiliza para hacer coincidir todos los valores posibles de un campo. Por ejemplo, un asterisco usado en el campo de la hora sería equivalente a cada hora o un asterisco en el campo del mes sería equivalente a cada mes.
- el nombre de usuario es opcional (disponible solo si es el archivo crontab del sistema)
Ejemplos:
Entendamos la sintaxis anterior con algunos ejemplos.
1. Programe un cron para que se ejecute a las 5 a. M. Todos los días
0 5 * * * /scripts/job.sh
2. Programe un cron para que se ejecute dos veces al día a las 6 a. M. Y a las 6 p. M.
0 6,18 * * * /scripts/job.sh
3. Programe un cron para que se ejecute cada minuto
* * * * * /scripts/job.sh
4. Programe un cron para que se ejecute en cada Monday a las 7 pm.
0 19 * * mon /scripts/job.sh
5. Programe un cron para que se ejecute cada 15 minutos.
*/10 * * * * /scripts/job.sh
6. Programe un cron para que se ejecute en los meses seleccionados
* * * feb,jun,oct * /script/job.sh
7. Ejecute el script de shell /home/script/backup.sh
el 4 de marzo a las 7:25 AM
25 7 4 3 * /home/script/backup.sh
8. Programe un cron para que se ejecute cada 30 segundos
Dado que no tenemos control sobre los segundos en Crontab, podemos lograrlo mediante los dos pasos siguientes process.
- Primero programemos una tarea que se ejecute cada minuto.
* * * * * /home/scripts/script.sh
- Ahora usemos
sleep
comando para pausar la ejecución durante 30 segundos.
* * * * * sleep 30; /home/scripts/script.sh
La tarea anterior detendrá la ejecución durante 30 segundos y se reanudará nuevamente.
Tipo de archivos de configuración de Cron
Hay dos tipos de archivos de configuración de Cron:
Crontab del sistema UNIX / Linux
Esto requiere privilegios de root porque usually se utiliza para servicios del sistema y trabajos críticos. El sexto campo (en la sintaxis anterior description) es el nombre de un usuario para que se ejecute el comando. Le da al crontab del sistema la capacidad de ejecutar comandos como cualquier usuario.
El usuario Crontab
El usuario también puede instalar sus propios trabajos cron usando el comando crontab. Aquí también, el sexto campo (en la sintaxis anterior description) es el comando a ejecutar, y todos los comandos se ejecutan como el usuario que creóated el crontab.
Cada usuario puede tener su propio archivo crontab, y aunque estos son archivos en /var/spool/cron/
crontabs, no están destinados a ser editados directamente. Necesitamos usar el comando crontab para editar o configurar nuestros propios trabajos cron.
¿Cómo funciona?
El servicio cron (demonio) se ejecuta en segundo plano y comprueba constantemente (cada minuto) el /etc/crontab
archivo, y /etc/cron.*/
directorios. También comprueba el /var/spool/cron/
directorio.
Los comandos son ejecutados por cron cuando los campos de minuto, hora y mes coinciden con la hora actual y al menos uno de los campos de dos días (día del mes o día de la semana) coincide con el día actual.
Comandos básicos
Listado de trabajos Cron existentes
Podemos enumerar todos los trabajos de Cron sin abrir el archivo de configuración crontab usando el siguiente comando
crontab -l
Si no hay ningún trabajo existente, devolverá la salida como
[geekflare@localhost ~]# crontab -l
no crontab for geekflare
[geekflare@localhost ~]#
Si el usuario ya ha agregado algunos de los trabajos, se mostrará de la siguiente manera.
[geekflare@localhost ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[geekflare@localhost ~]#
La tabla cron es específica del usuario, lo que significa que debe iniciar sesión con un usuario específico para ver la lista de la tabla cron.
List Cron para un usuario particular
Para enumerar los trabajos programados de otro usuario, use la opción como -u (Usuario) y -l (Lista).
crontab -u another_username -l
Ejemplo: crontab -u geekflare -l
Agregar / modificar entradas de Crontab
Para editar la entrada crontab, podemos usar -e
opción como se muestra a continuación.
crontab -e
El comando anterior abrirá los editores vi donde especificará los detalles del trabajo y guardará el archivo. Una vez guardado, puede verificar si cron está configurado o no con crontab -l
.
Agregar / modificar entradas de Crontab para un usuario en particular
Podemos editar el crontab para otro usuario usando el siguiente comando
crontab -u another_username -e
Ejemplo: crontab -u geekflare -e
Eliminar la entrada de Crontab
Uso <strong>-r</strong>
parámetro con Crontab para eliminar trabajos programados completos sin confirmación de crontab
crontab -r
Si desea confirmación antes de eliminar trabajos programados, utilice <strong>-i</strong>
opción con -r
, que solicitará la confirmación del usuario antes de eliminar el crontab del usuario.
crontab -i -r
[geekflare@localhost ~]# crontab -i -r
crontab: really delete geekflare's crontab?
Cadena especial Crontab
Además de la sintaxis anterior que discutimos, también podemos usar ocho cadenas especiales proporcionadas por Crontab. No solo nos ahorrará tiempo, sino que también mejorará la legibilidad.
Cadena especial | Descripción |
@reboot | Ejecutar una vez, después del inicio. |
@yearly | Ejecutar una vez al año, es decir, 0 0 1 1 * |
@annually | Igual que @yearly |
@monthly | Ejecutar una vez al mes, es decir, 0 0 1 * * |
@weekly | Ejecutar una vez a la semana, es decir, 0 0 * * 0 |
@daily | Ejecutar una vez al día, es decir, 0 0 * * * |
@midnight | Igual que @daily |
@hourly | Ejecutar una vez por hora, es decir, 0 * * * * |
Ejemplos de cadenas especiales de Crontab
1. Crontab para programar tareas anualmente
@yearly /scripts/greeting.sh
Podemos ejecutar el anterior para enviar un saludo de año nuevo, se ejecutará en el primer minuto de cada año.
2. Crontab para programar tareas que se ejecutarán mensualmente.
@monthly /scripts/cleanup.sh
Podemos ejecutar el anterior para realizar algunas actividades de limpieza al comienzo de cada mes.
De manera similar, podemos usar otra cadena especial de Crontab para fines semanales, diarios y horarios.
Directorio cron
El administrador del sistema puede utilizar una programación cron de todo el sistema que se encuentra en el directorio cron predefinido como se muestra a continuación
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.por hora
- /etc/cron.mensual
- /etc/cron.semanal
Ejemplos de Crontab en tiempo real
Analicemos algunos de los ejemplos en tiempo real que suelen utilizar un administrador de sistemas o profesionales de TI.ally utilizar.
Eliminar archivos y directorios vacíos
45 0 * * * geekflare find /tmp -type f -empty -delete
La expresión cron anterior encontrará los archivos y el directorio vacíos de / Tmp directorio y los eliminará. Este trabajo se ejecutará en 12.45 AM diariamente. Necesitamos mencionar el nombre de usuario para realizar este trabajo. En el ejemplo anterior, geekflare el usuario está realizando una operación de trabajo cron.
Ejecute múltiples tareas usando un solo cron
* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh
Se pueden separar varias tareas/trabajosated usando un punto y coma (;) y se puede asignar a una sola expresión cron.
Herramientas de prueba y formato de cron
Hasta ahora discutimos los comandos y la sintaxis de crontab para programar una tarea. Pero, ¿qué sucede si no es un administrador del sistema y su trabajo no es configurar Cron regularmente? Es posible que no sea posible recordar la sintaxis y esto abre la posibilidad de errores. No se preocupe, tenemos una solución a este problema.
Hay varias herramientas de formato de Cron disponibles en línea.
# 1. Generador de trabajos cron
Generador de trabajos cron es una GUI muy fácil de usar donde puede especificar los minutos, los días y la ruta del script para generarate crontab.
Tomemos un ejemplo en tiempo real donde tengo que ejecutar /home/processMonitor.sh
cada 5 minutos entre Monday para el viernes.

Entonces, obtuve la siguiente sintaxis de Cron que puedo poner en mi crontab ejecutando
crontab –e
0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh
# 2. Generador Crontab
Generador Crontab es otra herramienta útil para generarate crontab y con esta herramienta, también puede agregar si desea guardar la salida cron en el archivo o enviarla por correo electrónico.

# 3. crontab Guru
crontab Guru es un sencillo editor de expresiones de programación cron en línea. Además, proporciona un medio útil para monitorhaciendo tu cronjob. Todo lo que necesitamos hacer es copiar un comando proporcionado y agregarlo al final de la definición de crontab. En caso de que el trabajo cron falle o ni siquiera se inicie, recibirá un correo electrónico de alerta.
En el siguiente ejemplo, el trabajo se ejecutará en 04:05, todos los días, todos los meses y todas las semanas.

Para Concluir
Espero que lo anterior te ayude a comprender mejor.anding de Crontab y configuración de trabajos cron. Programar trabajos a través de Cron es una de las muchas tareas realizadas por el administrador de Linux. Si estás interesado en aprender habilidades avanzadas, mira esto. curso.