Está en la página 1de 10

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.

html

alband

Buscar...

Posts
Inicio

Comunidades
Destacados

Msica

Juegos

TOPs

Global

Novatos

Crear post
Me gusta

Historial
0 7 2 Twittear 0

LINUX Y GNU | HACE MS DE 1 MES

alband
Seguidores Puntos Posts

cron a fondo
cron es un programa daemon (demonio) que sirve para ejecutar tareas programadas segn una combinacin de la hora, da del mes, mes, da de la semana y semana. Su comportamiento esta regulado por su archivo de configuracin, que se llama crontab. Cada usuario del sistema posee un archivo crontab personalizado y slo el usuario root puede modificar el archivo crontab de otro usuario.
Elite

218

6.225 55

Ver ms del autor

Qu usos le podemos dar a Crontab? * Darnos mensajes para recordarnos eventos, cosas importantes que no debemos olvidar, programando esto por pantalla o tambin podemos auto-enviarnos un email. * Apagar un equipo a la hora que nosotros queramos, por ejemplo, nos vamos a dormir y dejamos la computadora bajando cosas de internet y le decimos que a las 3 de la maana se apague automticamente. * En el caso de servidores, algo muy til es el auto envi de estado de los sistemas, si tienes muchos servidores, puedes realizar escaneos con diferentes herramientas como nmap, tripwire etc y auto-enviarte esos datos en vez de correrlos todos los das sobre los sistemas que administres para ver si hubo intrusiones, limpieza de la base de datos, limpieza del espacio en disco, exploracin en busca de virus, limpieza de la memoria temporal o cach, rotacin de los archivos de registro, auto publicacin de RSSs, etc. * Para realizar backups, se puede programar un cron que a cierta hora de cierto dia de la semana realize un backup de todos los datos que creas necesarios.

Opciones
Borrar Editar

Tags
cron crontab tareas bash email programadas exim backup

limpieza

Compartido por

Es importante aclarar, cron asume que el sistema est activo de forma continua (servidor). Si el sistema no est activo cuando est programada una tarea, la tarea no se realizar. Para configurar las tareas en funcin de los perodos, debe utilizar anacron. Para programar las tareas contemporneas, use el comando at, el mismo se usa para programar una nica tarea en un tiempo especfico.

Archivo crontab El fichero de configuracin principal de cron, /etc/crontab, contiene las siguientes lneas:

En este ejemplo se programa el apagado del PC, todos los sbados a las 21.30
30 21 * * 6 root /sbin/shutdown -h now

Cada lnea del fichero /etc/crontab tiene el formato siguiente:


# m h dom mon dow user command

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

(minute) (hour) (day of month) (month) (day of week) (command)

m (minute) nmero entero entre 0 y 59 h (hour) nmero entero entre 0 y 23 dom (day of month) nmero entero entre 1 y 31 (debe ser un da vlido) mon (month) nmero entero entre 1 y 12 (o nombre corto del mes, por ejemplo, ene, feb, etc.) dow (day of week) nmero entero entre 0 y 7, donde 0 o 7 corresponde a Domingo (o el nombre corto del da de la semana, por ejemplo, dom, lun, etc.) user - usuario que ejecutar el comando command el comando a ejecutar (el comando puede ser uno tal como ls /proc >> /tmp/proc o el comando para ejecutar un script personalizado que usted haya escrito.)

En cualquiera de los valores antes indicados, se puede utilizar un asterisco (*) para especificar todos los valores vlidos. Por ejemplo, un asterisco para el valor de mes significa que el comando se ejecutar cada mes dentro de las limitaciones del resto de los valores. Un guin (-) entre los nmeros enteros indica un intervalo de nmeros enteros. Por ejemplo, 1-4 significa los nmeros 1, 2, 3 y 4. Valores separados por comas (,) especifican una lista. Por ejemplo 3, 4, 6, 8 La barra (/) puede utilizarse para especificar valores de pasos. El valor de un nmero entero se puede omitir dentro de un intervalo si se indica a continuacin del intervalo lo siguiente /<nmero entero>. Por ejemplo, 0-59/2 puede usarse para definir el resto de los minutos del campo minuto. Los valores de pasos tambin pueden utilizarse con un asterisco. Por ejemplo, el valor */3 puede usarse en el campo de mes para omitir el tercer mes. Las lneas que empiezan por almohadilla (#) son comentarios y no se procesan. Como podr observar en el archivo /etc/crontab, usa el script run-parts para ejecutar los scripts en los directorios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, y /etc/cron.monthly cada hora, da, semana o mes, respectivamente. Los ficheros de estos directorios deben ser scripts de shell.

Veamos algunos ejemplos: Todos los das a las 6 en punto de la tarde:


0 18 * * * usuario comando

Todos los jueves a las 2:30 de la maana:


30 2 * * 4 usuario comando

Cada 15 minutos de 7 a 9 de la tarde:


*/15 19-21 * * * usuario comando

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

Cada 5 minutos durante la primera media hora de cada Sbado:


0-30/5 0 * * 5 usuario comando

El da 15 y 21 de cada mes a las 4 de la maana:


0 4 15,21 * * usuario comando

El 25 de Septiembre a las 10 de la noche y slo si es martes:


0 22 25 9 2 usuario comando

Para definir intervalos de tiempo podemos utilizar el /intervalo, por ejemplo: Cada 5 minutos:
*/5 * * * * /usr/bin/denyhosts.sh

Cada 4 horas a en punto:


0 */4 * * * /usr/local/bin/mksnap

En este caso debemos tener cuidado con el siguiente, ya que esto significa: "Cada minuto de la hora cada cuatro horas" por lo que cada 4 horas se ejecutara cada minuto de esa hora.
* */4 * * * /usr/local/bin/mksnap

Para indicar algunas horas sueltas sin intervalo sera, por ejemplo a las 2:00, a las 3:00 y a las 7:00 podemos separar los elementos por comas:
0 2,3,7 * * * /usr/local/bin/mksnap

Igual se pueden manejar rangos especiales: A las 5:30 de la tarde todos los das de lunes a viernes.
30 17 * * 1,2,3,4,5 usuario comando

A las 12 del da todos los das primero, quince y 28 de cada mes (ideal para nminas)
00 12 1,15,28 * * usuario comando

Control de acceso a Cron Los ficheros /etc/cron.allow y /etc/cron.deny se usan para restringir el acceso a cron. Un usuario slo puede hacer uso de cron si su nombre aparece en:
/etc/cron.allow

Si este archivo no existe, el usuario puede usar crontab a menos que su nombre aparezca en:
/etc/cron.deny

El formato de los dos ficheros de acceso es un nombre de usuario en cada lnea. No est permitido espacio en blanco en ninguno de los ficheros. El demonio cron (crond) no deber ser reiniciado si los ficheros de control de acceso se modifican. Los ficheros de control de acceso se leen cada vez que el usuario intenta aadir o borrar una tarea cron. con este comando agregamos al usuario alband a la lista de usuarios denegados, si el fichero no existe ser creado.
echo alband >> /etc/cron.deny

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

tratamos ahora de agregar una tarea con ese usuario y vemos que ya no se puede

El usuario root puede utilizar siempre cron, sin prestar atencin a los nombres de usuarios listados en los ficheros de control de acceso.

Usuarios normales Los usuarios no root pueden configurar las tareas programadas con crontab. Todos los crontabs definidos por el usuario se almacenan en el directorio /var/spool/cron/crontabs y se ejecutan utilizando los nombres de los usuarios que los han creado. Para crear un crontab como un usuario normal, inicie la sesin como ese usuario y escriba el comando crontab -e para modificar el crontab del usuario con el editor especificado por la variable de entorno VISUAL o EDITOR. El fichero usa el mismo formato que /etc/crontab. Cuando se guardan los cambios en crontab, el crontab se almacena segn el nombre de usuario, y se escribe en el fichero /var/spool/cron/crontabs/usuario. El demonio cron controla el fichero /etc/crontab, el directorio /etc/cron.d/ y el directorio /var/spool/cron cada minuto para cada cambio. Si se encuentra algn cambio, estos se descargan en la memoria. De este modo, el demonio no necesita ser reiniciado si se cambia un fichero crontab.

Manejo general del comando Para ver la tabla de tareas programadas:


crontab -l

Editar nuestras tareas programadas en el crontab:


crontab -e

Aqu se abrir un editor de texto, tal vez vim, pico o emacs, segn cual hayamos especificado como default. Desde el editor vamos a poder aadir lineas al fichero crontab, una linea por cada tarea que deseemos programar.

Borrar toda nuestra programacin de tareas con:


crontab -r

Editar crontab de un usuario en particular


crontab [ -u usuario ] archivo

crontab [ -u usuario ] { -l | -r | -e }

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

La opcin -u se utiliza para indicar el crontab de usuario que queremos administrar slo root podr usar la orden crontab con esta opcin.

Ejemplo simple de backup Si quieres respaldar todas tus Descargas para que no se te pierdan por cualquier cosa. Para ello vamos a realizar la operacin de la siguiente forma: Haremos un tar.gz del directorio "Descargas"
crontab -e

30 15 * * * tar -cvpzf /home/usuario/backup.tar.gz /home/usuario/Descargas/

crontab tambin maneja cadenas especiales para definir rangos.

@reboot Ejecuta cuando inicia el pc @yearly ejecuta slo una vez al ao, es ugual a 0 0 1 1 * @annually igual que @yearly @monthly ejecuta una vez al mes, el da primero, es ugual a 0 0 1 * * @weekly Semanal el primer minuto de la primer hora de la semana, es ugual a 0 0 * * 0. @daily diario, a las 12:00A.M., es ugual a 0 0 * * * @midnight igual que @daily @hourly al primer minuto de cada hora, es ugual a 0 * * * *

Su uso es muy sencillo.


@hourly usuario /home/usuario/scripts/recordatorio.sh

@daily root apt-get update && apt-get -y upgrade

Descarga de la distribucin Debian "testing" (se generan semanalmente)


@monthly usuario wget -q -O http://cdimage.debian.org/cdimage/weekly-builds/multiarch/iso-dvd/debian-testing-i386-amd64-source-DVD-1.iso

ejemplo para realizar un backup de un pc que no sabemos con certeza a que hora estar encendido, podemos hacer que se realice la operacin cuando arranca el sistema.
@reboot alband tar -cvpzf /home/alband/backup.tar.gz /home/alband/Documentos/

Envo de email con exim Vamos a instalar exim para que todos los usuarios puedan enviar reportes por email de sus actividades Verificamos si esta instalado en el sistema
/usr/sbin/exim -i

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

si no sale este resultado hay que instalarlo

su

poner contrasea de root, a partir de ahora y en todo el tutorial vamos a trabajar como usuario root. (Si estas en ubuntu, sudo su y pones tu propia contrasea)
apt-get install exim4

Luego pasamos a configurar exim


nano -wB /etc/exim4/update-exim4.conf.conf

Y realizamos las siguientes modificaciones para poder usar una cuenta de gmail existente.

Luego modificamos los datos de nuestra cuenta de gmail


nano /etc/exim4/passwd.client

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

verificamos si es root el propietario del archivo editado antes.


ls -l /etc/exim4/passwd.client

-rw-r----- 1 root Debian-exim 343 nov 13 19:50 /etc/exim4/passwd.client

Ahora reiniciamos exim


/etc/init.d/exim4 restart

enviamos un email para verificar que anda


who | mail -s "Usuarios conectados al servidor" alband123@gmail.com

Para depurar errores en configuraciones, o ver en ms detalle que esta pasando, no existe mejor alternativa que ver los logs.
tail /var/log/exim4/mainlog

verificamos que el email se recibi

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

Algunos ejemplos para envo email

Todos los das a las 6 de la tarde, enva un email solamente si fallo el backup.
0 18 * * * root /home/bkp.sh 1>/dev/null || true | mail -s "Error de backup" alba

de lunes a viernes a las 17:30 hs


30 17 * * 1,2,3,4,5 root df -h | mail -s "Espacio libre en server" alband123@gmail.co

lunes miercoles y viernes a las 13:30 hs


30 13 * * 1,3,5 root last -n 10 | mail -s "ultimos 10 usuarios que se han logueado" s

Ms ejemplos funcionales Usuario root ejecutar una actualizacin todos los domingos (sun) a las 10:45 a.m
45 10 * * sun root apt-get -y update

Se cierra la navegacin a las 18 hs


0 18 * * * root iptables -P INPUT DROP

Cada dia a las 0:00


0 0 * * * /var/qmail/bin/qmail-scanner-queue.pl -z

Cada domingo a las 6:30


30 6 * * 0 /usr/local/bin/optimize.mysql.sh

______________________________________________________________

Si te gusto el post comenta! Estas sin tiempo para leerlo detenidamente? Agregalo a favoritos ya! No entendiste algo? mandame un MP que te ayudo. Te gustan mis aportes? Seguime! no te defraudar.

Fuentes de conocimientos: http://www.encuentroalternativo.com/programando-tareas-con-crontab/ http://elayo.es/cron-tareas-programadas http://www.linuxtotal.com.mx/index.php?cont=info_admon_006 http://hatteras.wordpress.com/2010/12/02/crontab-programarautomatizar-tareas/ http://www.adslayuda.com/Linux-crontab.html http://www.kubuntu-es.org/wiki/sistema/automatizar-tareas-cron-anacron

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

http://usemoslinux.blogspot.com/2010/11/cron-crontab-explicados.html http://systemadmin.es/2010/03/como-programar-tareas-con-el-cron http://giantdorks.org/alain/send-mail-to-root-when-crontab-command-fails-to-run/ exim http://cwflores.wordpress.com/2010/11/04/utilizando-exim4-en-debian-para-enviar-mensajes-a-traves-de-gmail/ http://22xd.blogspot.com/2012/10/exim-en-servidor-debian.html bash http://facusdelacruz.wordpress.com/2008/03/29/los-comandos-last-y-lastb/

Fuentes de Informacin
El contenido del post es de mi autora, y/o, es un recopilacin de distintas fuentes.

0
Me gusta

0
Twittear

0
Enviar

155 Puntos
A favoritos
Favoritos

33

832

Visitas

Seguidores

Relacionados
Tareas programadas en GNU/Linux: Comando cron Apagado de windows 7 con TAREAS PROGRAMADAS. Cmo administrar la ejecucin de tareas programadas Desd.. Informtica. Tareas programadas en windows7 Cmo administrar las tareas programadas en GNOME Cmo administrar la ejecucin de tareas programadas desde cron a fondo Cmo aadir tareas al Cron de Linux

8 comentarios
@TuKi3 hace 1 mes +3 te dejo 10 porque es lo que estaba dando en clase! muy bueno! @BlackSabbath1990 hace 1 mes +1 muy interesante, no sabia para que servia este demonio. Gracias. +10 @Drklrd hace 1 mes +2 Tiene aplicaciones brbaras cron, cuando antes no haba herramientas de backups lo que tenas que hacer era un script y usar rsync cada cierto tiempo @foxsermon hace 1 mes +1 Nuevamente un gran post

@BuitreCordobes hace 1 mes +1 gracias por el aporte! @feli6031 hace 1 mes +1

http://www.taringa.net/posts/linux/15922617/cron-a-fondo.html

Que buenos post haces!!!! estoy alucinado Gracias por compartirlos @alband hace 1 mes Muchas gracias a todos ustedes por los comentarios positivos, y los puntos. @piruo7 hace 1 mes +1 Buen post amigo gracias por compartir y por explicarlo de una forma tan detallada..! +10 @ElMagno90 hace 1 mes +1 Buensimo +10, lo guardo en favoritos par verlo luego.

Escribir un comentario...

Comentar

Buscar...

Ir al cielo

Anunciar

Ayuda

Prensa

Protocolo

Desarrolladores

Denuncias

Report Abuse - DMCA

Trminos y condiciones

Privacidad de datos

También podría gustarte