English English French French Spanish Spanish German German
Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Crontab en Linux: con ejemplos y herramientas en tiempo real

entendiendo crontab
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Exploremos crontab, sus comandos y varias operaciones asociadas 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 proceso demonio del sistema que realizará automáticamente algunas tareas y trabajos según el tiempo programado.

Los casos de uso

Crontab es útil para realizar varias operaciones como manejar copias de seguridad automatizadas, rotar archivos de registro, sincronizar archivos entre máquinas remotas y borrar carpetas temporales, etc. Crontab se puede usar para cualquier tipo de trabajo, pero se vuelve especialmente útil cuando empezamos a trabajar 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.

Crontab Syntax

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 Crontab. Crontab tiene seis campos y los primeros cinco (1-5) campos definen la fecha y hora de ejecución. El último campo, es decir, el sexto campo, podría ser un nombre de usuario y / o tarea / trabajo / comando / script que se 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 el Crontab, podemos lograrlo a través del proceso de dos pasos a continuación.

  • 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.

Type of Cron configuration files

Hay dos tipos de archivos de configuración de Cron:

Crontab del sistema UNIX / Linux

Esto requiere privilegios de root porque generalmente se usa para servicios del sistema y trabajos críticos. El sexto campo (en la descripción de sintaxis anterior) es el nombre de un usuario para ejecutar el comando. Le da la capacidad al sistema crontab para 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 descripción de sintaxis anterior) es el comando a ejecutar, y todos los comandos se ejecutan como el usuario que creó 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.

How does it work?

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.

Basic Commands

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

Utilice las <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?

Crontab Special String

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 especialDescripción
@rebootEjecutar una vez, después del inicio.
@yearlyEjecutar una vez al año, es decir, 0 0 1 1 *
@annuallyIgual que @yearly
@monthlyEjecutar una vez al mes, es decir, 0 0 1 * *
@weeklyEjecutar una vez a la semana, es decir, 0 0 * * 0
@dailyEjecutar una vez al día, es decir, 0 0 * * *
@midnightIgual que @daily
@hourlyEjecutar 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.

Cron Directory

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.weekly

Crontab Realtime Examples

Analicemos algunos de los ejemplos en tiempo real que suelen utilizar un administrador de sistemas o profesionales de TI.

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, friki 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 / trabajos usando un punto y coma (;) y se puede asignar a una sola expresión cron.

Cron formatting & testing tools

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 en la que puede especificar el minuto, los días y la ruta del script para generar 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 generar 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. Gurú de Crontab

Gurú de Crontab es un sencillo editor de expresiones de programación cron en línea. Además, proporciona un medio útil para monitorear su cronjob. Todo lo que tenemos que hacer es copiar un comando provisto 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.

# 4. Probador CRON

Probador CRON nos permite probar las definiciones de fecha y hora de cron. Puede haber una situación en la que tengamos que decodificar la sintaxis cron existente para solucionar problemas o simplemente querer hacer una prueba.

Para ello, podemos utilizar esta herramienta. Todo lo que tenemos que hacer es copiar y pegar nuestra expresión cron en el campo de definición cron, luego elegir el número de iteraciones y hacer clic en Pruebatest para ver las distintas fechas en las que se ejecutará.

Revisemos una de nuestras expresiones cron 4 3 */2 * *que debería ejecutarse en 03:04 (AM) cada dos días. Verifiquémoslo con cron tester.

Conclusión

Espero que lo anterior lo ayude a comprender mejor Crontab y configurar trabajos cron. La programación de trabajos a través de Cron es una de las muchas tareas realizadas por el administrador de Linux. Si está interesado en aprender habilidades avanzadas, consulte este curso.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre Linux
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Trata Intruder