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:
- Minuto: Es el minuto exacto en el que quieres que se ejecute la tarea
- Hora: La hora exacta en formato de 24 horas
- Día: Valor numérico del día del mes
- Mes: Valor numérico del mes
- Semana: Valor numérico del día de la semana
- Usuario: usuario que ejecuta el comando, sino se pone, se usa root por defecto
- Comando: comando a lanzar
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 [email protected] -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.
- i - insertar
- Tecla insert - presionada una vez entramos a modo de reemplazo, presionada de nuevo, regresamos al modo de insertar
- Esc - Salimos del modo de inserción y entramos al modo comando
- :w - Guarda los cambios
- :q - Sale sin guardar
- :wq - Sale y guarda cambios
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por txoandi el 05 de Octubre de 2007
crontab -e
Código :
A ver si no descuadra
Saludos!
Por EXTREMO el 07 de Diciembre de 2007
GRacias..
Por angel el 16 de Diciembre de 2007
necesito hacer un crontab pero no se como hacerlo correr ni los comandos que van
Por angel el 16 de Diciembre de 2007
linux
Por al3ks el 30 de Mayo de 2008
# | | | | | |
# | | | | | +-------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 Paul Mendez el 27 de Junio de 2008
Por DAVID MILLAN el 10 de Julio de 2008
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 fernando alvarado el 17 de Julio de 2008
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 a fernando el 25 de Julio de 2008
Por cesar el 13 de Febrero de 2009
por ejemplo
/home/usuario/./reinio.sh
Por papuchyn el 17 de Febrero de 2009
me interesa bastante...
Gracias adelantadas por sus respuestas
Por fedel el 22 de Mayo de 2009
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 argenis el 30 de Octubre de 2009
01 * * * *
sino me puedn dcir como es? gracias!!!
Por gerardo restrepo el 02 de Febrero de 2010
Por Asaroth el 19 de Febrero de 2010
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 ADMINUX el 19 de Febrero de 2010
Por Asaroth el 03 de Marzo de 2010
Por cce el 03 de Mayo de 2010
#!/bin/bash
#Obtenemos el Espacio de memoria ocupado, expresado en %
ESPACIO_OCUPADO=`df /$DIR_BD | awk '{print $5}' | grep -a %`
#Para verificar que el espacio_ocupado no supere un valor determinado.
#Quitamos el simbolo % para poder trabajar solo con numeros.
ESPACIO_ABSOLUTO=`expr match "$ESPACIO_OCUPADO" '\([0-9]*[0-9]\)'`
Esta ultima linea, no funciona cuando se ejecuta con el crontab. Lo que hace es quitarle el simbolo % para poder trabajar solo con mumeros.
Por que como root funciona correctamente y con el crontab no?
Cualquier ayudita se los agradeceria un monton.
Muchas gracias.-
Saludos.-
Por :D el 24 de Septiembre de 2010
* * * * *
osease cada minuto, cada hora .. etc etc
Por Ibar el 07 de Diciembre de 2010
Por Guillermo el 08 de Mayo de 2012