Automatización de tareas en Linux
con Cron
Por: Carlos Antonio Leal Saballos
Agenda
●
¿Qué es el cron?
●
Iniciar cron
●
Usando cron
●
El comando crontab
●
Controlando el acceso al cron
¿Qué es cron?
●
Cron permite a usuarios GNU/Linux ejecutar automáticamente
comandos o scripts según hora o fecha programada.
●
Es usado normalmente para comandos de tareas
administrativas, como respaldos, pero puede ser usado para
ejecutar cualquier cosa.
●
Está presente en prácticamente todas las distribuciones de
Linux.
●
Su contra-parte en Windows es el administrador de tareas
programadas
Iniciar cron
●
cron es un servicio
●
A los servicios en Gnu/Linux se les conoce con el nombre de “demonios”
●
Todos los servicios necesitan ser iniciados una vez, luego pasan a
ejecutarse en segundo plano.
●
En la mayoría de las distribuciones el servicio se llama “cron” ó “crond” y se inicia
automáticamente.
●
Para saber si el servicio está corriendo:
●
service cron status
●
systemctl status cron
Iniciar cron
●
Para administrar el servicio en los comandos
anteriores :
●
stop – para detener el servicio
●
start – para iniciar el servicio
●
restart – para re-iniciar el servicio – cierra todos los
procesos e inicia uno nuevo
●
reload – para recargar el servicio – lee el archivo de
configuración sin reiniciar
Iniciar cron
●
Habilitar/Deshabilitar el servicio
●
En ubuntu y familia
– update-rc.d cron defaults/remove
– sysv-rc-conf cron on/on
●
En CentOS y familia
– chkconfig crond on/off
– systemctl enable/disable crond
Usando cron
●
En el directorio etc, están los siguientes directorios:
●
[Link]
●
[Link]
●
[Link]
●
[Link]
●
Si se coloca un script en cualquiera de estos directorios,
entonces el script se ejecutará cada hora, cada día, cada
semana o cada mes, dependiendo del directorio.
Usando cron
#!/bin/sh
#script que genera un respaldo
tar czvf [Link] /etc
cp [Link] /root/resplado`date +%Y%m%d`.[Link]
rm [Link]
________________
NOTAS:
●
No olvidar cambiar los permisos!!!
●
Debe estar en alguno de los directorios del cron
Usando cron
Usar cron es a través de manipular directamente el archivo
/etc/crontab.
Para ver el contenido del archivo basta con el siguiente
comando:
●
cat /etc/crontab
●
Es posible añadir script para que se ejecuten automáticamente
en este archivo, la explicación del formato a continuación
Usando cron
Las primeras tres líneas son variables que indican lo siguiente:
●
SHELL es el 'shell' bajo el cual se ejecuta el cron. Si no se especifica, se tomará
por defecto el indicado en la línea /etc/passwd correspondiente al usuario que
este ejecutando cron.
●
PATH contiene o indica la ruta a los directorios en los cuales cron buscará el
comando a ejecutar. Este path es distinto al path global del sistema o del usuario.
●
MAIL TO es a quien se le envía la salida del comando (si es que este tiene alguna
salida). Cron enviará un correo a quien se especifique en este variable, es decir,
debe ser un usuario válido del sistema o de algún otro sistema. Si no se
especifica, entonces cron enviará el correo al usuario propietario del comando
que se ejecuta.
Usando cron
Usando cron
Operador importante * significa “todo” ejemplos:
Usando cron
Para los amantes de lo complicado más ejemplos
El comando crontab
●
Linux es un sistema multiusuario y cron es de las aplicaciones que soporta el
trabajo con varios usuarios a la vez.
●
Cada usuario puede tener su propio archivo crontab, de hecho el
/etc/crontab se asume que es el archivo crontab del usuario root,
●
Pero cuando los usuarios normales (e incluso root) desean generar su propio
archivo de crontab, entonces utilizaremos el comando
●
crontab -e
●
En el directorio /var/spool/cron (puede variar según la distribución), se
genera un archivo cron para cada usuario, este archivo aunque es de texto,
no debe editarse directamente.
El comando crontab
●
*/1 * * * * ping -c 10 [Link] >> /var/log/cronrun
●
Con este cron se comprueba conectividad cada minuto y se envía la
salida a un archivo.
El comando crontab
La otra forma es crear un archivo con la configuración del cron, por ejemplo:
●
nano micron
# borra archivos de carpeta compartida
0 20 * * * rm -f /home/loboalfa/compartidos/*
# ejecuta un script que realiza un respaldo de la carpeta documentos el primer día de
cada mes
0 22 1 * * /home/loboalfa/[Link]
# cada 5 horas de lun a vie, se asegura que los permisos sean los correctos en mi
home
1 *5 * * * 1-5 chmod -R 640 /home/loboalfa/*
El comando crontab
●
Luego añadimos las tareas al cron con
●
crontab micron
●
Para estar seguros que los cambios han sido aplicados se puede utilizar
●
service crond restart
Controlando el acceso al cron
●
Cron permite controlar que usuarios pueden o no pueden usar los servicios de cron.
Esto se logra de una manera muy sencilla a través de los siguientes archivos:
●
/etc/[Link]
●
/etc/[Link]
●
Para impedir que un usuario utilice cron o mejor dicho el comando crontab, basta con
agregar su nombre de usuario al archivo /etc/[Link]
●
Para permitirle su uso entonces sería agregar su nombre de usuario en /etc/[Link]
●
Si por alguna razón se desea negar el uso de cron a todos los usuarios, entonces se
puede escribir la palabra ALL al inicio de [Link]
●
Si estos archivos no existen se entiende que no hay ninguna restricción
Presentación: Automatización de tareas en Linux con Cron
Autor: Carlos Antonio Leal Saballos (lealsaballos@[Link])
●
Managua, Nicaragua, Mayo del 2016
●
Licencia: CC-BY-SA 3.0 Unported
●
[Link]
●
Datos tomados de Wikipedia ([Link]) – CC-BY-SA 3.0
Por su atención
●
MUCHAS GRACIAS