¿Quieres registrarte?

Automatizar tareas del servidor con Crontab

Por: Aoyama
4 de Octubre del 2007
5861 de clabLevel
Otros artículos de Aoyama
18,917 visitas

Crontab es una herramienta indispensable para el administrador de sistemas, su principal función, radica en la automatización de tareas dentro de nuestro servidor. Lo primero que vamos a hacer es ver que tareas tenemos en el crontab, para ello

Código :

crontab -l

Nos mostrará la lista de tareas especificadas en el crontab, es posible que veamos una lista como está:

Código :

5 0 * * * tar czf * respaldo

Ahora, analizando está línea encontramos 6 elementos puestos en el orden que sigue:

Por ejemplo, supongamos que queremos lanzar un proceso a las 12 de la noche de cada sábado que empaquete el contenido de la carpeta de algún proyecto y nos lo envié por correo, sería algo como esto:

Código :

0 0 * * 6 tar -cvf proyecto.tar /home/jaullamas/proyecto
5 0 * * 6 mail jaullamas@porahi.com -s Respaldo -a /home/jaullamas/proyecto.tar

Noten que estoy corriendo el proceso como root, los asteriscos se usaran cuando no queremos especificar un parámetro, por supuesto el comando es obligatorio. Ahora que ya tenemos nuestra línea construida, es hora de meterla el contrab, para ello tecleamos:

Código :

crontab -e

Y se nos abre una ventana con el editor por defecto (casi siempre vi o vim), estás son algunas reglas básicas de sobrevivencia en vi y derivados para los que se pierdan.

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas linux servidores

Comentarios | Enviar un comentario
Siempre gasto esta chuleta ;)
crontab -e

Código :

#      11    23    02    10     1    amule
#       |     |     |     |     |     |
#       |     |     |     |     |     +-------Comando
#       |     |     |     |     +----- dia de la semana (0 - 6) (Sunday=0)
#       |     |     |     +------- mes (1 - 12)
#       |     |     +--------- dia del mesh (1 - 31)
#       |     +----------- hora (0 - 23)
#       +------------- minuto(0 - 59)

# Ejecutar amule
0 15   * * * DISPLAY=":0" amule



A ver si no descuadra :P

Saludos!
Por: txoandi
Disculpen estimados y estimas pero el comando CRONTAB, en que sistema operativo se usa....???
GRacias..
Por: EXTREMO_blog
hola amigos espero que puedan ayudarem
necesito hacer un crontab pero no se como hacerlo correr ni los comandos que van
Por: angel _blog
el crontab se usa en el sistema operativo
linux
Por: angel _blog
# 11 23 02 10 1 amule
# | | | | | |
# | | | | | +-------Comando
# | | | | +----- dia de la semana (0 - 6) (Sunday=0)
# | | | +------- mes (1 - 12)
# | | +--------- dia del mesh (1 - 31)
# | +----------- hora (0 - 23)
# +------------- minuto(0 - 59)




Ke no te flata el nombre de usuario?????
Por: al3ks-blog
Quetal, para la empresa que trabajo necesito que se haga un respaldo por semana todos los sabados... sabado1, sabado2, sabado3 , sab.... dependiendo de cuantos sabados tenga el mes.... Como lo haria
Por: Paul Mendez-blog
Buenas tardes

Resulta que tengo una shell que para un sistema ERP y baja Oracle, tengo que ejecutarla todas las noches manualmente porque el crontab no lo esta haceidno a las 2 a.m. como lo especifico. Me podrian ayudar por favor. Acontinuacion coloco el fuente de la shell por si lo quieren mirar y analizar. Pero creo que el lio no es de la shell si no del crontab.

ES COLOCO COMO ESTA ESCRITO EN EL CRONTAB

0 2 * * 0,1,2,3,4,5 /baan/backup/backup.sh

los dias son solamente 5 no se si aca esta el problema. Acontinuacion esta la fuente de la shell PLEASE AYUDENME

# ===================================================================
# Diseño : Mauricio Uribe Pérez
# Fecha : Ene-02-2008
# Observacion : Baja,Sube Baan + Oracle y Hace Backup Automaticamente
# ===================================================================

# ---------------------------------------------
# 0- Inicializacion de Variables de entorno
# ---------------------------------------------
TERM_DEFAULT=lft
TERM=`termdef`
TERM=${TERM:-$TERM_DEFAULT}
if [ "$LC_MESSAGES" = "C@lft" -a "$TERM" != "lft" ]
then
unset LC_MESSAGES
fi
export LOGNAME MAIL MAILMSG TERM
trap 1 2 3
BSE=/baan/b4c2/bse
BSE_TMP=/baan/b4c2/bse/tmp
export BSE BSE_TMP
PATH=$BSE/bin:$PATH
export PATH
export PS1='cobog-s-svr008:$PWD> '
DEFAULT_BROWSER='netscape'; export DEFAULT_BROWSER
BSE=/baan/b4c2/bse
export BSE
BSE_TMP=$BSE/tmp
export BSE_TMP
PATH=$PATH:$BSE/bin
export PATH
umask 077
export ORACLE_BASE=/oracle/
export ORACLE_HOME=/oracle/product/10.2.0
export ORACLE_SID=b4c2
export PATH=$PATH:$ORACLE_HOME/bin:.
export ORACLE_OWNER=oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
ORAENV_ASK=NO

# --------------------------------------------------
# 0- Temporizador Adicional - 2 horas
# --------------------------------------------------
echo "-------------------------------------------------------------------------------" >> /baan/backup/backup_baan.log
echo "0- Inicio Temporizador 3 horas : `date`"
echo "0- Inicio Temporizador 3 horas : `date` " >> /baan/backup/backup_baan.log
|sleep 30600
echo "0- Fin Temporizador : `date`"
echo "0- Fin Temporizador : `date` " >> /baan/backup/backup_baan.log

# ---------------------------------------------
# 1- Bajar Baan
# ---------------------------------------------
echo "Usuarios Activos antes de bajar Baan : `date` " >> /baan/backup/backup_baan.log
ps -ef|grep bshell >> /baan/backup/backup_baan.log
echo "1- Inicio Bajar Baan : `date`"
echo "1- Inicio Bajar Baan : `date` " >> /baan/backup/backup_baan.log
cd /baan/b4c2/bse/etc
rc.stop
echo "1- Fin Bajar Baan : `date`"
echo "1- Fin Bajar Baan : `date` " >> /baan/backup/backup_baan.log

# ---------------------------------------------
# 2- Bajar ORACLE
# ---------------------------------------------
echo "2- Inicio Bajar Listener + Motor Oracle : `date`"
echo "2- Inicio Bajar Listener + Motor Oracle : `date` " >> /baan/backup/backup_baan.log
#su - oracle -c "lsnrctl stop"
# su - oracle -c "dbshut"
su - oracle -c "lsnrctl stop"
su - oracle -c "sqlplus /nolog << EOF
conn / as sysdba
shutdown immediate
exit
EOF"
echo "2- Fin Bajar Listener + Motor Oracle : `date`"
echo "2- Fin Bajar Listener + Motor Oracle : `date` " >> /baan/backup/backup_baan.log
echo "2- Temporizador de 30 segundos : `date` " >> /baan/backup/backup_baan.log
sleep 30
#su - oracle -c "/oracle/app/oracle/product/8.0.5/bin/dbshut"
#su - oracle -c "/oracle/product/10.2.0/bin/dbshut"
#su - oracle -c "svrmgrl << EOF connect internal shutdown abort EOF"
#exit
#|MODO DE BAJAR SERVICIO ORACLE MANUALMENTE
#|Alimentar variables de ambiente incluyendo ORACLE_SID
#| $ svrmgrl
#| SVRMGRL> connect internal <<enter>>
#| SVRMGRL> shutdown immediate<<enter>>
#| SVRMGRL> exit<<enter>>
echo "2- Estatus Listener : `lsnrctl status|grep Error: 79` " >> /baan/backup/backup_baan.log
echo "2- Estatus Motor Oracle : `ps -ef|grep pmon` " >> /baan/backup/backup_baan.log

# ---------------------------------------------
# 3- Creo archivo temporal del Backup en AIX
# ---------------------------------------------
echo "3- Inicio Creacion archivo temporal : `date`"
echo "3- Inicio Creacion archivo temporal : `date` " >> /baan/backup/backup_baan.log
find /oracle > /baan/backup/bkt
find /baanctl >> /baan/backup/bkt
find /baansys >> /baan/backup/bkt
find /baandata >> /baan/backup/bkt
find /baanidx >> /baan/backup/bkt
find /baan >> /baan/backup/bkt
find /home >> /baan/backup/bkt
find /.brand >> /baan/backup/bkt

# ---------------------------------------------
# 4- Inicio el Backup
# ---------------------------------------------
echo "4- Inicio Backup : `date`"
echo "4- Inicio Backup : `date` " >> /baan/backup/backup_baan.log
cat /baan/backup/bkt | backup -iqvf /dev/rmt0
echo "4- Fin Backup : `date`"
echo "4- Fin Backup : `date` " >> /baan/backup/backup_baan.log

# --------------------------------------------------
# 5- Espera de 2 minutos antes de subir Oracle /Baan
# --------------------------------------------------
|sleep 120
sleep 60
echo "5- Fin espera de 2 minutos : `date`"
echo "5- Fin espera de 2 minutos : `date` " >> /baan/backup/backup_baan.log

# ---------------------------------------------
# 6- Subir ORACLE
# ---------------------------------------------
#|MODO DE INICIAR SERVICIO ORACLE MANUALMENTE
#|-Alimentar variables de ambiente incluyendo ORACLE_SID
#|$ svrmgrl
#|SVRMGRL> connect internal <<enter>>
#|SVRMGRL> startup<<enter>>
#|SVRMGRL> exit<<enter>>
echo "6- Inicio Levantar Oracle + Listener : `date`"
echo "6- Inicio Levantar Oracle + Listener : `date` " >> /baan/backup/backup_baan.log
#su - oracle -c "dbstart"
#su - oracle -c "lsnrctl start"

su - oracle -c "sqlplus /nolog << EOF
conn / as sysdba
startup
exit
EOF"
su - oracle -c "lsnrctl start"

echo "6- Estatus Listener : `lsnrctl status|grep successfully` " >> /baan/backup/backup_baan.log
echo "6- Estatus Motor Oracle : `ps -ef|grep pmon` " >> /baan/backup/backup_baan.log
echo "6- Fin Levantar Oracle : `date`"
echo "6- Fin Levantar Oracle : `date` " >> /baan/backup/backup_baan.log

# ---------------------------------------------
# 7- Subir Baan
# ---------------------------------------------
echo "7- Inicio subir Baan : `date`"
echo "7- Inicio subir Baan : `date` " >> /baan/backup/backup_baan.log
cd /baan/b4c2/bse/etc
rc.start
echo "7- OK Fin Backup : `date`"
echo "7- OK Fin backup : `date` " >> /baan/backup/backup_baan.log
Por: DAVID MILLAN-blog
hola compañeros
necesito realizar un crotab para realizar un servicio de 15 minutos todos los dias

0,15,30,45 * * * * * * reinicio.sh
esta bien o me falta algo
Por: fernando alvarado-blog
¿has leido el artículo....?
Por: a fernando-blog
te falta la ruta del directorio y el ./
por ejemplo

/home/usuario/./reinio.sh
Por: cesar-blog
alguien puede recomendar un buen link aparte de esta maginifica pagina acerca del Crontab ?
me interesa bastante...

Gracias adelantadas por sus respuestas
Por: papuchyn
Hola a todos espero que me puedan aclarar una duda, para ejecutar los script con crontab. por ejmplo

Así:
01 * * * * root /home/fedel/prueba.sh

o de esta manera:
01 * * * * root /home/fedel/./prueba.sh

NO SE CUAL ES LA MANERA CORRECTA.

les agradecería mucho su ayuda
Por: fedel-blog
epa un cron es para q se ejecute cada minuto??? es asi???:

01 * * * *

sino me puedn dcir como es? gracias!!!
Por: argenis-blog
necesito crear un cron que me haga una copia de respaldo todos los dias a las 10 de la noche, como hago esto
Por: gerardo restrepo-blog
Quiereço hacer un respaldo a diario pero saben como puedo hacer para que el archivo que se genere tenga un numero correlitaivo distinto cada dia? por que si coloco
0 0 * * * tar -cvf /home/proyecto.tar /home/proyecto

Todos los dias me va a crear el mismo archivo proyecto y la idea es tener uno de cada dia para ir almacenando verciones anteriores. ejemplo:
proyecto01.tar, proyecto02.tar , proyecto03.tar.

Nota me funciona cualquier correlativo podri ser una fecha tambien.
Gracias por su ayuda
Por: Asaroth-blog
DAN ASCO ! :-P
Por: ADMINUX-blog
Nadie tiene idea de como hacer lo que estoy preguntando??? si ADMINUX le parece todo tan sencillo por que no demuestra sus conocimientos?
Por: Asaroth-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.