Bienvenidos a este capítulo del Curso de Linux para Hackers – El Comando Cron. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Conceptos que aprenderás en esta sección:

  1. Introducción al demonio cron y su utilidad: qué es cron y cómo automatiza tareas en segundo plano de forma recurrente.
  2. Uso de crontab para configurar trabajos en cron: cómo listar, editar, eliminar y programar trabajos recurrentes en cron.
  3. Tipos de archivos de configuración de cron: archivos de configuración para tareas de usuario y del sistema.
  4. Sintaxis de crontab para programar tareas: estructura de programación para tareas recurrentes.
  5. Ejemplos prácticos de cron: configuraciones comunes para programar tareas en intervalos específicos.
  6. Redirección de salida en cron: cómo gestionar la salida y errores de tareas en archivos de registro.

El Comando Cron

El cron se puede definir como una utilidad de software proporcionada por un sistema operativo similar a Linux que ejecuta la operación programada en un período predeterminado. Es un proceso demonio y se ejecuta como un proceso en segundo plano. Realiza las tareas descritas en un período predefinido cuando se encuentra una condición o un evento sin intervención del usuario.

Con frecuencia, lidiar con cualquier operación repetida es una tarea tediosa para un administrador de sistemas. Por lo tanto, el administrador de sistemas puede programar este tipo de procesos para que se ejecuten en segundo plano automáticamente a intervalos de tiempo regulares haciendo una lista de los comandos con la ayuda del comando cron.

Permite a todos los usuarios ejecutar la operación programada de forma regular, como hacer una copia de seguridad todos los días, sincronizar archivos en algunos intervalos regulares y programar actualizaciones semanalmente.

De forma recurrente, Cron inspecciona la tarea programada y cuando los campos de tiempo programado coinciden con los campos de tiempo actual, se ejecutarán los comandos programados. Automáticamente, se inicia desde el archivo /etc/init.d al ingresar a niveles de ejecución multiusuario.

Introducción al comando Crontab en Linux

El comando Crontab lista, edita, elimina o envía trabajos cron. Los trabajos cron son comandos que ejecuta el demonio cron a intervalos programados de forma regular. Necesitamos especificar el comando, es decir, crontab, con el indicador, es decir, -e, para finalizar cualquier trabajo cron. El comando crontab conjura una sesión de edición que nos permite establecer un archivo crontab. Creamos entradas para todos los trabajos cron en este archivo. Todas las entradas deben estar en un formato adecuado para el demonio cron.

El comando crontab copia las entradas en el directorio, es decir, /var/spool/cron/crontabs, y las coloca dentro de un nombre de archivo para nuestro nombre de usuario actual cuando terminamos de establecer las entradas y salimos del archivo. Alternativamente, podemos establecer un archivo crontab describiendo el parámetro de archivo. El archivo debe estar en el formato que el demonio cron espera si existe. El comando crontab conjura el editor si no existe. El comando conjura el editor que describe si la variable de entorno EDITOR está disponible. De lo contrario, el comando crontab utiliza el editor vi.

  • Necesitamos describir el comando crontab junto con el indicador -l para listar el contenido de nuestro archivo crontab.
  • Podemos usar la bandera -r para eliminar un archivo existente.
  • El parámetro Nombre de usuario (opcional) puede ser aplicado por el propietario del archivo crontab o por el usuario raíz para verificar, eliminar, enumerar o editar el estado del trabajo cron para el usuario definido.
  • Se genera un mensaje de error y el programa sale si el nombre de usuario no es válido.
  • Si no se especifica el parámetro Nombre de usuario (opcional), los indicadores crontab están presentes para el usuario actual y el usuario raíz.
  • El crontab es un conjunto de comandos que deseamos ejecutar según un cronograma regular.
  • El nombre del comando también se utiliza para organizar esa lista.

La forma completa de crontab es «tabla cron» porque utiliza el programador de tareas cron para ejecutar tareas; cron en sí se llama así por «chronos». Cron es el proceso del sistema que realizará tareas automáticamente para nosotros de acuerdo con un cronograma fijo. Este cronograma se conoce como crontab, que es el nombre del programa que se utiliza para modificar dicho cronograma.

¿Por qué utilizamos Cron Jobs?

Las siguientes son algunas razones para utilizar trabajos cron en Linux:

  • Los trabajos cron se utilizan para automatizar el mantenimiento del sistema.
  • Crontab es una opción perfecta para automatizar trabajos Unix.
  • Los datos almacenados en caché se limpian periódicamente.
  • Envió correos electrónicos de notificación, como correos electrónicos de expiración de contraseña, boletines informativos, etc.
  • Purgar y archivar tablas de bases de datos
  • Eliminar archivos de registro antiguos
  • Ayuda al sistema operativo a realizar una copia de seguridad programada de la base de datos o de los archivos de registro.

Tipos de archivos de configuración de Cron

Los siguientes son los tipos de archivos de configuración de cron:

  • El usuario Crontab
    puede instalar sus trabajos cron con la ayuda del comando crontab. Todos los usuarios pueden tener su archivo crontab, y por lo tanto estos son archivos en crontabs /var/spool/cron/; no suelen editarse directamente. Podemos usar el comando crontab para editar y configurar nuestros trabajos cron.
  • El crontab del sistema Linux/Unix
    requiere privilegios sudo porque se utiliza para trabajos críticos y servicios del sistema. Proporciona la capacidad de ejecutar comandos como usuario en el crontab del sistema.

Sintaxis básica de Crontab

Cron lee todos los archivos de configuración de la lista de comandos que se van a ejecutar. El demonio aplica una sintaxis particular para interpretar las líneas dentro de las tablas de configuración de crontab.

La crontab («tabla cron») es una lista de comandos para ejecutar las operaciones programadas en un momento determinado. Permite al usuario agregar, eliminar o modificar las operaciones programadas.

La sintaxis del comando crontab contiene seis partes separadas por un espacio en el que las primeras cinco partes ilustran el tiempo para ejecutar la operación y la última parte ilustra el comando.

Minuto (contiene los valores de 0 a 59).

Hora (contiene los valores de 0 a 23).

Día del mes (contiene los valores del 1 al 31).

El mes del año (contiene los valores de enero a diciembre o del 1 al 12, se aplicarán las tres letras iniciales del nombre del mes).

Día de la semana (alberga los valores de Dom a Sáb o de 0 a 6, se aplicarán las tres letras iniciales del día).

El crontab de Linux contiene seis campos diferentes. Los cinco campos iniciales especifican la fecha y la hora de ejecución, y el último se utiliza para la ejecución de comandos.

Sintaxis de crontab

[Minuto] [Hora] [Día_del_Mes] [Día_del_Año] [Día_de_la_Semana] [Comando]  

Sintaxis:

cron [-f] [-1] [-L nivel de registro]  

Opciones en el comando Cron

  • -f: Esta opción se utiliza para permanecer en modo de primer plano y no realiza ninguna función de «daemonía».
  • -1: Esta opción habilitará los nombres de los archivos compatibles con LSB, es decir, /etc/cron.d.
  • -n: Esta opción se utiliza para agregar los FQDN dentro del asunto al transferir correos.
  • -L loglevel: Le informará al cron qué registrar de las tareas utilizando unos valores que se mencionan a continuación:
    • Este valor registrará el comienzo de cada tarea cron.
    • Este valor registrará la finalización de cada tarea cron.
    • Este valor registrará cada tarea fallida y el estado de salida no será equivalente a cero.
    • Este valor registrará el número de proceso de cada tarea cron.

Las siguientes son algunas reglas que definen el campo de formato de fecha y hora:

  • Si uno de los cinco campos está fijado con un símbolo de asterisco (*), este representa el valor de cada campo. Por ejemplo, podemos poner el símbolo de asterisco (*) para ejecutar el comando diariamente en el campo de la semana.
  • También podemos aplicar el rango de números separados por un símbolo de guion (-) en el campo de fecha y hora para incluir varios valores contiguos, pero no cada valor de campo. Por ejemplo, podemos aplicar el 7-10 para ejecutar cualquier comando de julio a octubre.
  • El operador de coma (,) se utiliza para incluir la lista de números que pueden ser consecutivos o no. Por ejemplo, «1, 3, 5» en el campo de la semana significa que el comando se ejecutará todos los lunes, miércoles y viernes.
  • El carácter de barra (/) se agrega para omitir los valores de los números proporcionados. Por ejemplo, «*/4» en el campo de la hora define «cada 4 horas» y es igual a los números 0, 4, 8, 12, 16, 20.

Permitir a los usuarios ejecutar las tareas cron:

El usuario debe estar incluido en este archivo para poder ejecutar las tareas cron cuando el archivo esté disponible:

/etc/cron.allow  

En caso de que el archivo, es decir, /etc/cron.allow no exista, pero sí exista el archivo, es decir, cron.deny, un usuario no debe estar incluido dentro de este archivo para poder ejecutar la tarea cron.

/etc/cron.deny  

Importante: En caso de que ninguno de los archivos anteriores esté disponible, solo el administrador del sistema (superusuario) tendrá permiso para utilizar el comando proporcionado.

Comando para ejecutar

Define el comando a ejecutar. Ilustra el nombre de archivo o directorio exacto de los comandos o scripts que deseamos que cron ejecute.

A continuación se menciona un ejemplo:

/root/backup.sh  

El comando anterior examina el directorio raíz del sistema y ejecuta el script, es decir, backup.sh. Podemos definir cualquier comando o script que queramos.

Salida (opcional)

De forma predeterminada, cron envía un correo electrónico al propietario del archivo crontab cuando se ejecuta. Es una forma eficiente de mantener un registro de las operaciones. Recuerde que las operaciones menores o habituales pueden llenar rápidamente nuestra bandeja de entrada.

Podemos evitar este escenario deteniendo el envío de un correo electrónico porque es un aspecto opcional.

Para desactivar la salida del correo electrónico, podemos incluir la cadena, es decir, >/dev/null 2>&1 después de los campos de comando y tiempo.

Configuración de la operación Cron

Necesitamos abrir crontab junto con un editor de texto para configurar la operación cron e ingresar la sintaxis del comando que deseamos ejecutar.

Edición de un archivo crontab

Necesitamos escribir un comando en nuestra ventana de terminal para abrir el archivo de configuración de crontab para un usuario actual. El comando se menciona a continuación:

crontab-e  

Podemos incluir cualquier operación programada, una por línea.

Guarde ese archivo y luego salga una vez que hayamos terminado de incluir operaciones. El demonio de cron leerá y ejecutará las instrucciones proporcionadas.

Nota: No es necesario reiniciar Cron para aplicar las modificaciones.

Edición de crontab para un usuario distinto

Podemos introducir un comando para editar un crontab para un usuario específico. El comando se menciona a continuación:

crontab -u other_username -e  

Hay algunos puntos que se deben tener en cuenta al trabajar con cron. Estos puntos se mencionan a continuación:

  • Tener el control de la versión fuente para rastrear y mantener las modificaciones a las expresiones de cron.
  • Organice todas las operaciones programadas en función de su frecuencia o importancia y agrúpelas según su tiempo o rango de acción.
  • Verifique las operaciones programadas incluyendo inicialmente una frecuencia alta.
  • No escriba directamente código típico ni varias redirecciones y canalizaciones en la expresión de cron. En lugar de eso, escríbalos para programar un script y un script en crontab.
  • Aplique alias si se repiten conjuntos de comandos similares con frecuencia.
  • Ignore la ejecución de scripts o comandos utilizando cron como superusuario.

Cadena única de Crontab

Podemos utilizar ocho cadenas únicas proporcionadas por crontab. No solo nos ahorrará tiempo, sino que también aumentará la legibilidad.

Unique StringExplicación
@rebootDespués del inicio, ejecutar una vez.
@yearlyEjecutar una vez al año, es decir, 0 0 1 1 *
@annuallyEs lo mismo 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 * * *
@midnightEs lo mismo que @daily.
@hourlySe ejecuta una vez por hora, es decir, 0 * * * *

Directorio Cron

Un administrador del sistema puede utilizar una programación cron para todo el sistema, que recae en el directorio cron predefinido, como se muestra a continuación:

  • /etc/cron.weekly
  • /etc/cron.monthly
  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.d

Cómo modificar o agregar crontab

El usuario puede modificar sus trabajos crontab utilizando el siguiente comando:

crontab -u -e  

Este comando abre la configuración crontab personal de nuestro sistema informático, que puede modificarse con nuestro editor de texto predeterminado.

No necesitamos reiniciar nuestro crontab porque recogerá automáticamente nuestras modificaciones cuando usemos el siguiente comando:

crontab -l

Podemos usar el siguiente comando crontab para eliminar nuestras tareas crontab:

crontab -r

Podemos usar el siguiente comando crontab para actualizar o agregar trabajos en crontab:

crontab -e

Podemos usar el siguiente comando crontab para editar el crontab de otros usuarios:

crontab -u nombre de usuario -e  

Lista de crontab

Podemos usar el siguiente comando crontab para ver las entradas crontab del usuario:

crontab -l

Podemos usar el siguiente comando crontab para ver las entradas crontab de un usuario específico:

crontab -u nombre de usuario -l  

Ejemplos de operaciones Cron

Podemos utilizar el símbolo para especificar cada valor al describir las operaciones. Al introducir un valor dentro de cualquier campo, solo se ejecuta el comando sobre ese valor.

Por ejemplo:

* 2 0 * 4 /root/backup.sh  

Solo se ejecuta si el primer día de un mes (0) cae en miércoles (4), aunque esté configurado para ejecutarse a las 2 a. m. Si lo modificamos de la siguiente manera:

* 2 0 * * /root/backup.sh  

El comando anterior se ejecutará el primer día de cada mes a las 2 a. m. La tabla facilita algunos comandos comunes con un archivo, es decir, /root/backup.sh a través de nuestro ejemplo anterior. Esta tabla se menciona a continuación:

N.ºDominioOperación Cron
1.* * * * * /root/backup.shEjecutar la operación Cron cada minuto
2.30 * * * * /root/backup.shEjecutar la operación Cron cada 30 minutos
3.0 * * * /root/backup.shEjecutar la operación Cron cada hora
4.0 0 * * * /root/backup.shEjecutar la operación Cron a medianoche todos los días
5.0 2 * * * /root/backup.shEjecutar la operación Cron todos los días a las 2 a. m.
6.0 0 1 * * /root/backup.shEjecutar la operación Cron cada primer día del mes
7.0 0 1 5 * * /root/backup.shEjecutar la operación Cron cada quince días del mes
8.0 0 0 1 2 * /root/backup.shEjecutar la operación Cron a medianoche el 1 de diciembre
9.0 0 * * 6 /root/backup.shEjecutar la operación Cron a medianoche el sábado

Programar operaciones anualmente

@yearly /scripts/greeting.sh  

Podemos ejecutar el anterior para enviar un saludo de año nuevo. Además, se ejecutará en el primer minuto de cada año.

Programar operaciones para que se ejecuten mensualmente

@monthly /scripts/cleanup.sh  

Podemos ejecutar el comando anterior para implementar algunas actividades de limpieza al comienzo de cada mes. De manera similar, podemos usar otras cadenas únicas de crontab para objetivos horarios, diarios y semanales.

Ejemplos importantes de Crontab

Discutiremos algunos comandos crontab importantes y su descripción a continuación:

0 7, 17 * * * /scripts/script.sh

Es un comando cron para implementar varios trabajos de programación. Este comando se ejecutará diariamente a las 7 a. m. y a las 5 p. m.

* / 5 * * * * * /scripts/script.sh

El comando anterior ejecutará un cron después de 5 minutos.

0 5 * * mon /scripts/script.sh

El comando es un programador de cron que nos ayudará a ejecutar la tarea cada lunes a las 5 a. m. Es útil para realizar tareas semanales, como la limpieza del sistema.

* / 3 * * * * /scripts/monitor.sh

El comando anterior ejecutará nuestro script en intervalos de 3 minutos.

* * * feb, jun, sep * /script/script.sh

El comando anterior se puede utilizar para programar cualquier cron que se ejecute durante un mes en particular. El comando se utiliza para ejecutar tareas en los meses de septiembre, junio y febrero. A veces necesitamos programar cualquier tarea para que se ejecute una tarea mensual.

0 17 * * mon, wed /script/script.sh

Este comando se ejecuta en algunos días específicos. Se ejecutará todos los lunes y miércoles a las 5:00 p. m.

0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh

El comando anterior permite que cron se ejecute el primer sábado de cada mes.

0 * / 6 * * * /scripts/script.sh

Este comando se utiliza para ejecutar un script durante un intervalo de 6 horas, por lo que se puede configurar como se muestra arriba.

0 4, 17 * * mon, tue /scripts/script.sh

El comando anterior programa una tarea para que se ejecute dos veces el martes y el lunes. Podemos usar la configuración anterior para hacerlo.

* * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh

El comando anterior programa un cron para que se ejecute cada 15 segundos.

@yearly /scripts/script.sh

El comando anterior programa una tarea anualmente. La marca de tiempo de @yearly es «0 0 5 1*». Ejecutará la tarea en el quinto minuto de cada año. Podemos usarlo para enviar saludos de año nuevo.

@monthly /scripts/script.sh

El comando anterior programa una tarea para que se ejecute mensualmente. La marca de tiempo de @monthly es la misma que «0 0 1 * *». La expresión del comando permite la ejecución de la tarea en 5 minutos por mes.

* * * * * /scripts/script.sh; /scripts/script2.sh

El comando anterior se utiliza para ejecutar múltiples tareas con un cron.

@weekly /bin/script.sh

Este comando programa tareas para que se ejecuten semanalmente. La marca de tiempo de @weekly es la misma que «0 0 4 * sun». Implementa las tareas semanales, como la limpieza del sistema.

@daily /scripts/script.sh

Este comando se utiliza para programar tareas que se ejecutarán diariamente. La marca de tiempo de @daily es la misma que «0 2 * * *». Ejecuta la tarea en el segundo minuto de cada día.

@hourly /scripts/script.sh

Permite que las tareas se ejecuten cada hora. La marca de tiempo de @hourly es la misma que «0 * * * *». Ejecuta la tarea durante 5 minutos cada hora.

@reboot /scripts/script.sh

Permite que las tareas se ejecuten al reiniciar el sistema. La expresión @reboot es útil para las tareas que el sistema informático desea ejecutar al iniciar el sistema. Es útil para iniciar automáticamente las tareas en segundo plano.

Ejemplos de Programación de Tareas con Cron

Ejecutar una tarea todos los días a las 2:30 am:

30 2 * * * /ruta/a/mi_comando.sh

Esto ejecutará el script mi_comando.sh todos los días a las 2:30 am.

Ejecutar cada lunes a las 8:00 am:

0 8 * * 1 /ruta/a/mi_comando.sh


Aquí, 1 representa el lunes en el campo del día de la semana, y la tarea se ejecutará cada lunes a las 8:00 am.

Ejecutar cada 15 minutos:

*/15 * * * * /ruta/a/mi_comando.sh

El asterisco (*) significa «cualquier valor», y */15 en el campo de minutos indica que se ejecute cada 15 minutos.

Ejecutar cada primer día del mes a medianoche:

0 0 1 * * /ruta/a/mi_comando.sh

Esta tarea se ejecutará a las 12:00 am del primer día de cada mes.

Ejecutar cada día entre las 9:00 am y 5:00 pm cada 30 minutos:

*/30 9-17 * * * /ruta/a/mi_comando.sh

Aquí se limita la ejecución a los horarios entre 9:00 am y 5:00 pm, cada 30 minutos.

Ejecutar cada domingo a la medianoche:

0 0 * * 0 /ruta/a/mi_comando.sh

Como 0 también representa el domingo, esta tarea se ejecutará a las 12:00 am todos los domingos.

Comandos Adicionales de Crontab

Usar cron para tareas específicas del sistema (ubicación de archivos crontab del sistema):
Existen ubicaciones de cron en el sistema para tareas automatizadas de todos los usuarios y del sistema en general. Estas están en directorios específicos y no necesitan ser configuradas manualmente en el crontab de un usuario individual.

  • /etc/crontab: Define tareas de cron para el sistema y permite especificar directamente el usuario en cada tarea.
  • /etc/cron.hourly/: Ejecuta scripts cada hora.
  • /etc/cron.daily/: Ejecuta scripts cada día.
  • /etc/cron.weekly/: Ejecuta scripts cada semana.
  • /etc/cron.monthly/: Ejecuta scripts cada mes.

Configuración de Variables de Entorno en Crontab

Puedes definir variables de entorno dentro del archivo crontab. Esto es útil para especificar la ruta de ejecución o el shell a usar.

Establecer el shell a utilizar:

SHELL=/bin/bash

Establecer la ruta predeterminada:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ejemplo de configuración:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash
MAILTO=miemail@example.com

Aquí, MAILTO define la dirección de correo a la que se enviarán los resultados o errores de las tareas de cron.

Redirigir Salida y Errores de Cron

Si deseas guardar la salida o los errores de una tarea programada, puedes redirigirlos a archivos de registro específicos.

Redirigir solo la salida estándar:

* * * * * /ruta/a/mi_comando.sh > /ruta/a/salida.log

Redirigir errores a un archivo de error:

* * * * * /ruta/a/mi_comando.sh 2> /ruta/a/errores.log

Redirigir tanto la salida como los errores:

* * * * * /ruta/a/mi_comando.sh > /ruta/a/salida.log 2>&1

Este comando tiene más opciones que puedes explorar

at --help

También  te recomendamos consultar las páginas man para este comando:

 man cron
 man crontab

Conclusión

Con cron, puedes automatizar casi cualquier tarea en tu sistema, lo cual es especialmente útil para trabajos de mantenimiento y administración en servidores Linux. La clave es definir adecuadamente el tiempo y la frecuencia en el crontab, y utilizar las configuraciones de redirección para hacer un seguimiento de los resultados y errores de las tareas.

Resumen de los puntos clave:

  1. ¿Qué es cron?
    Cron es un demonio de Linux que ejecuta tareas programadas automáticamente en intervalos predefinidos, ideal para tareas de mantenimiento y automatización como copias de seguridad, sincronización de archivos y actualizaciones.
  2. Configurar trabajos con crontab
    Crontab permite gestionar trabajos en cron de la siguiente forma:
    • crontab -e: edita el archivo crontab del usuario.
    • crontab -l: lista los trabajos configurados en crontab.
    • crontab -r: elimina todos los trabajos del usuario en crontab.
    • crontab -u nombre_usuario -e: permite editar trabajos cron de un usuario específico (requiere permisos root).
  3. Sintaxis básica de crontab
    La sintaxis de crontab define cinco campos de tiempo y un comando. Ejemplo:
    • [Minuto] [Hora] [Día_del_Mes] [Mes] [Día_de_la_Semana] [Comando]
      • *: representa «cualquier valor», ejecutando el comando para cada posible valor de campo.
      • Rango (-), lista (1,3,5) y salto (*/4)**: permiten definir horarios específicos y frecuentes.
  4. Ejemplos de programación con cron
    • Cada día a las 2:30 AM: 30 2 * * * /ruta/a/mi_comando.sh
    • Cada 15 minutos: */15 * * * * /ruta/a/mi_comando.sh
    • Cada lunes a las 8:00 AM: 0 8 * * 1 /ruta/a/mi_comando.sh
    • Cada primer día del mes a medianoche: 0 0 1 * * /ruta/a/mi_comando.sh
  5. Cadenas predefinidas en crontab
    Cron ofrece cadenas especiales que facilitan la programación:
    • @yearly: ejecuta la tarea una vez al año.
    • @monthly: ejecuta la tarea una vez al mes.
    • @weekly: ejecuta la tarea una vez a la semana.
    • @daily: ejecuta la tarea una vez al día.
    • @hourly: ejecuta la tarea cada hora.
    • @reboot: ejecuta la tarea al iniciar el sistema.
  6. Archivos de configuración de cron del sistema
    Las configuraciones de cron a nivel del sistema, como /etc/cron.daily, /etc/cron.weekly, etc., permiten ejecutar scripts en intervalos específicos sin configurar cada trabajo manualmente en crontab.
  7. Configuración de variables en crontab
    Puedes definir variables de entorno en crontab:
    • SHELL: especifica el shell que se usará (por ejemplo, SHELL=/bin/bash).
    • PATH: define las rutas de búsqueda de comandos.
    • MAILTO: configura la dirección de correo para recibir las salidas de cron.
  8. Redirección de salida y errores en cron
    La salida y los errores de tareas cron pueden redirigirse:
    • Solo salida estándar: > /ruta/a/salida.log
    • Solo errores: 2> /ruta/a/errores.log
    • Ambos: > /ruta/a/salida.log 2>&1

Utilizar cron es fundamental en la administración de sistemas Linux para automatizar y gestionar tareas de mantenimiento de manera eficaz.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

Preguntas

  1. ¿Qué es el comando cron en Linux y para qué se utiliza?
  2. ¿Cuál es la diferencia entre cron y crontab?
  3. ¿Cómo se estructura la sintaxis de crontab para definir una tarea programada?
  4. ¿Qué representa el símbolo * en la configuración de un crontab?
  5. ¿Cómo se establece una tarea para que se ejecute cada lunes a las 9:00 AM usando crontab?
  6. ¿Qué tipos de archivos de configuración de cron existen y cómo se diferencian?
  7. ¿Cómo se desactiva el envío de correos de confirmación en cron?
  8. ¿Para qué sirven los directorios /etc/cron.daily, /etc/cron.weekly, y /etc/cron.monthly?
  9. ¿Qué es una cadena única en crontab y cómo simplifica la programación de tareas?
  10. ¿Cómo se verifica el contenido actual de las tareas programadas en crontab?

Ejercicios

  1. Configure una tarea en crontab para que se ejecute cada día a las 2:00 AM y realice una copia de seguridad de un archivo.
  2. Programe una tarea para que se ejecute el primer día de cada mes a medianoche y envíe un correo de confirmación.
  3. Configure crontab para que ejecute una tarea cada 15 minutos y redirija su salida a un archivo log.
  4. Establezca una tarea que se ejecute a las 5:00 PM todos los viernes y que limpie el caché del sistema.
  5. Programe un comando crontab que se ejecute cada hora y escriba la fecha actual en un archivo timestamp.log.
  6. Configure una tarea en crontab para que se ejecute el primer lunes de cada mes a las 8:00 AM.
  7. Edite el crontab de otro usuario utilizando el comando adecuado y programe una tarea diaria a las 3:00 PM.
  8. Utilice una cadena única de crontab para que se ejecute un script automáticamente al reiniciar el sistema.
  9. Incluya en el crontab una variable de entorno MAILTO para recibir notificaciones al ejecutar cada tarea.
  10. Programe una tarea en crontab que se ejecute cada 10 minutos entre las 9:00 AM y las 5:00 PM y redirija los errores a un archivo error.log.

Respuestas a las Preguntas

  1. Comando cron: Utilizado para ejecutar tareas programadas en intervalos regulares sin intervención del usuario, es útil para automatización en sistemas Linux.
  2. Diferencia entre cron y crontab: cron es el demonio que ejecuta tareas programadas, mientras que crontab permite listar, editar, y eliminar dichas tareas.
  3. Estructura de crontab: Consiste en cinco campos para el tiempo (minuto, hora, día del mes, mes, y día de la semana) y un comando o script a ejecutar.
  4. Uso de * en crontab: Representa «todos los valores posibles» en ese campo. Por ejemplo, * * * * * ejecuta una tarea cada minuto.
  5. Ejecutar cada lunes a las 9:00 AM: 0 9 * * 1 /ruta/a/mi_comando.sh.
  6. Tipos de archivos de configuración de cron:
    • Usuario crontab: Configuración personalizada de cada usuario.
    • Crontab del sistema: Tareas críticas y administrativas que requieren permisos root.
  7. Desactivar correos en cron: Añadir >/dev/null 2>&1 al final del comando evita el envío de correos.
  8. Directorios /etc/cron.daily y otros: Ejecutan automáticamente tareas diarias, semanales, o mensuales.
  9. Cadena única en crontab: Simplifica tareas repetitivas como @daily, @weekly, @reboot, eliminando la necesidad de escribir toda la sintaxis de tiempo.
  10. Ver contenido de crontab: Usar crontab -l para ver las tareas programadas.

Respuestas a los Ejercicios

  1. Copia de seguridad diaria a las 2:00 AM: 0 2 * * * /ruta/backup.sh.
  2. Tarea el primer día de cada mes: 0 0 1 * * /ruta/envia_correo.sh.
  3. Tarea cada 15 minutos con registro en log: */15 * * * * /ruta/mi_comando.sh > /ruta/mi_log.log.
  4. Limpiar caché cada viernes a las 5:00 PM: 0 17 * * 5 /ruta/limpiar_cache.sh.
  5. Tarea cada hora con fecha en timestamp.log: 0 * * * * date >> /ruta/timestamp.log.
  6. Primer lunes de cada mes a las 8:00 AM: 0 8 1-7 * 1 /ruta/tarea.sh.
  7. Editar crontab de otro usuario: crontab -u <nombre_usuario> -e y añadir 0 15 * * * /ruta/tarea_diaria.sh.
  8. Usar @reboot para una tarea al inicio: @reboot /ruta/script_al_iniciar.sh.
  9. Añadir MAILTO para notificaciones:
    • MAILTO="miemail@example.com" * * * * * /ruta/comando.sh
  10. Tarea cada 10 minutos con redirección de errores: */10 9-17 * * * /ruta/mi_comando.sh 2>/ruta/error.log.

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!