Programa tareas con Cron
En la administración de servidores, es común la realización de tareas tales como el logging de algún servicio o la ejecución de scripts que realicen tareas específicas.
En la administración de servidores, es común la realización de tareas tales como el logging de algún servicio o la ejecucución de scripts que realicen tareas específicas. En esta ocasión aprenderemos a administrar la “navaja suiza” de automatización para servidores GNU/Linux: Cron.
¿Qué es Cron?
Según nuestra fiel amiga Wikipedia:
“En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab. El nombre cron viene del griego chronos (χρόνος) que significa “tiempo”.”
Uso del demonio “Cron” (comando crontab)
Para interactuar con crontab y en concreto con su archivo de configuración, existen diferentes parámetros que podemos pasar
- crontab -e -> Editar archivo crontab
- crontab -r -> Borrar crontab
- crontab -l -> Enlistar crontab
Es posible ordenar que el demonio de Cron ejecute varias tareas a un tiempo determinado (hora de la máquina donde se ejecuta). La sintáxis puede parecer difícil a veces, pero con la práctica es bastante simple.
m h dom mon dow command
- m = minuto
- h = hora
- dom = día del mes
- mon = mes
- dow = día de la semana
- command = orden
Cada de una de estas órdenes está delimitada por algún dígito numérico:
- minuto(0-59)
- hora(0-23)
- DíaDelMes(1-31)
- Mes(1-12)
- DíaDeLaSemana(0-6)
- Comando
NOTA: Los valores numéricos pueden ser sustituídos por el caracter ‘*’, lo que significa que es ‘todo’.
INSTALACIÓN
Para instalar Cron, es posible compilar el código desde los fuentes o realizar. En el caso específico de Debian, pueden hacer la descarga desde los repositorios:
1
apt-get install cron
o
1
aptitude install cron
Luego de descargarlo, iniciamos el demonio
1
/etc/init.d/cron start
o
1
service cron start
o
1
systemctl start cron
INTERACTUANDO CON CRON
Para poder interactuar con el demonio de Cron, es necesario ejecutar el comando:
1
crontab -e
La primera vez que ejecutemos el comando, nos mostrará una lista de editores de texto en terminal que tenemos disponibles para utilizar. Seleccionamos alguno y continuamos.
Lo siguiente será editar el archivo cron. Para asignar tareas, hay que ir al final del archivo cron, agregar comentario (en caso de ser necesario) iniciando la línea con el caracter ‘#’ y justo debajo especificar la tarea a ejecutar así como su tiempo.
Cada una de las tareas que asignemos será ejecutada acorde al usuario con el que editemos el archivo. Procure ejecutar el cron con tareas que no requieran permisos de ‘root’ (en la medida de lo posible).
SINTÁXIS Y EJEMPLOS
Actualizar paquetes todos los días del mes, todos los meses todos los días de la semana las 12
1
00 00 * * * aptitude update
Actualizar paquetes todos los días del mes, todos los meses, los lunes a las 12
1
00 00 * * 1 aptitude update
Actualizar paquetes cada 5 minutos todos los días, a toda hora, todos los días del mes, todos los meses de lunes a viernes.
1
*/5 * * * 1-5 aptitude update
NOTA: Luego de realizar cualquier cambio dentro del archivo cron, hay que reiniciar el demonio.
ÓRDENES PREDEFINIDAS
Cron cuenta con algunas funciones que nos facilitan la vida por mucho. Estas funciones son para tiempos muy específicos
ordenes:
- @reboot
- @hourly
- @daily
- @weekley
Sintáxis:
orden comando
1
@reboot aptitude update
PLUS
Uno de los problemas que tiene Cron, es que el tiempo mínimo (nativo) para la ejecución de tareas es de 1 min. Sin embargo, en caso de necesitar ejecutar algún servicio en segundos podemos hacer los siguiente:
Dar ping a un equipo cada 15 segundos, todos los días a toda hora, todo el mes todos los meses toda la semana
1
sleep 15 && ping 192.168.1.254
En este ejemplo aprovechamos el comando ‘sleep’ para poder temporizar a nivel segundos.
Exploiting vulnerabilities, creating new ways through Happy Hacking!