Cron es una de las herramientas más útiles de Linux y una de las favoritas de los desarrolladores, ya que permite ejecutar comandos automatizados en períodos, fechas e intervalos específicos utilizando tanto scripts de propósito general como específicos de tareas.
Dada la descripción, puedes imaginar cómo los administradores del sistema lo utilizan para automatizar tareas de copia de seguridad, limpieza de directorios, notificaciones, etc. En este artículo veremos los mejores ejemplos!
Los trabajos de Cron se ejecutan en segundo plano y comprueban constantemente el archivo /etc/crontab
y los directorios /etc/cron.*/
y /var/spool/cron/
. Los archivos cron no deben editarse directamente y cada usuario tiene un crontab único.
¿Cómo entonces se supone que debes crear y editar trabajos cron? Con los comandos crontab. El crontab
es el método que utilizas para crear, editar, instalar, desinstalar y enumerar los trabajos cron
.
El comando para crear y editar trabajos cron
es el mismo y simple. Y lo que es aún mejor es que no es necesario reiniciar cron
después de crear nuevos archivos o editar los existentes.
crontab -e
Simplemente elige la opción de editor que más te guste…
1. Sintaxis de Cron
Al igual que con cualquier lenguaje, trabajar con cron es mucho más fácil cuando entiendes su sintaxis y hay 2 formatos que debes saber:
A B C D E USUARIO /ruta/del/comando arg1 arg2 > Salida
O
A B C D E USUARIO /root/backup.sh > Salida
Explicación de la sintaxis cron anterior:
A
: Rango de minutos: 0 – 59B
: Rango de horas: 0 – 23C
: Rango de días: 0 – 31D
: Rango de meses: 0 – 12E
: Rango de días de la semana: 0 – 7 . A partir del lunes, 0 o 7 representa el domingo.USUARIO
: reemplaza esto con tu nombre de usuario/ruta/del/comando
: el nombre del script o comando que deseas programarSalida
: > (opcional) puedes escribir la salida en un archivo o descartarla: Con> /dev/null 2>&1
se descartará.
Eso no es todo. Cron utiliza 3 símbolos de operador que te permiten especificar múltiples valores en un campo:
- Asterisco (
*
): especifica todos los valores posibles para un campo. - Coma (
,
): especifica una lista de valores. - Guión (
-
): especifica un rango de valores - Separador (
/
): especifica un valor de paso.
Ahora que conoces la sintaxis y los operadores de Cron, veamos algunos ejemplos de cron.
2. Ejemplos de trabajo Cron
El primer paso para ejecutar los comandos cron
es instalar tu crontab con el comando:
crontab -e
- Ejecutar
/root/backup.sh
a las 3 am todos los días:
0 3 * * * /root/backup.sh
- Ejecutar
script.sh
a las 4:30 pm el segundo de cada mes:
30 16 2 * * /ruta/script.sh
- Ahora enviemos la tarea programada anteriormente hacía un archivo de salida:
30 16 2 * * /ruta/script.sh > ruta/archivo.log
Por cierto, el script anterior muestra la geolocalización de una IP. Revisa Cómo encontrar ubicación geográfica de IP en terminal Linux para más información 🙂
Y así, mostramos la salida de la ejecución de cron:
- Sígamos, ejecutar
/scripts/phpscript.php
a las 10 pm durante la semana:
0 22 * * 1-5 /scripts/phpscript.php
- Ejecutar
perl.pl
a los 23 minutos después de la medianoche, 2 am y 4 am, todos los días:
23 0-23/2 * * * /ruta/de/perl.pl
- Ejecutar un comando de Linux a las 04:05 cada domingo:
5 4 * * sun /ruta/del/comandoLinux
3. Opciones de Cron
- Listar trabajos cron:
crontab -l
O
crontab -u usuario -l
- Eliminar todos los trabajos de crontab:
crontab -r
- Eliminar trabajo de Cron para un usuario específico:
crontab -r -u usuario
4. Strings en Crontab
Las cadenas (strings) están entre las cosas favoritas del desarrollador porque ayudan a ahorrar tiempo al eliminar la escritura repetitiva. Cron tiene cadenas específicas que puedes usar para crear comandos más rápido:
@hourly
: Ejecutar una vez cada hora, es decir,0 * * * *
@midnight
: Ejecutar una vez al día, es decir,0 0 * * *
@daily
: igual que la medianoche@weekly
: Ejecutar una vez cada semana, es decir,0 0 * * 0
@monthly
: Ejecutar una vez al mes, es decir,0 0 1 * *
@annually
: Ejecutar una vez al año, es decir,0 0 1 1 *
@yearly
: igual que @annually@reboot
: Ejecutar una vez en cada inicio
Por ejemplo, esta es la forma de hacer una copia de seguridad de tu sistema todos los días:
@daily /ruta/backup/script.sh
En este punto, tienes todo lo que necesitas para crear y administrar las tareas del sistema utilizando Cron. Ahora puedes comenzar a configurar y mantener varios entornos utilizando comandos programados.
¿Te ha gustado este artículo? Sígue este blog en su fanpage de Facebook, Twitter, Instagram y/o YouTube para que no te pierdas del mejor contenido informático y hacking!
¿Qué tan usuario de Cron eres? ¿Y hay algún detalle que puedas aportar al artículo? El cuadro de comentarios está abajo. ¡Y no volvides compartir este artículo! :’)