From: Leandro Lucarella Date: Sun, 24 Oct 2004 21:57:47 +0000 (+0000) Subject: Agrego funcion "die mensaje [cod_error]" para facil manejo de errores criticos, agreg... X-Git-Tag: svn_import~51 X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/commitdiff_plain/e6d23f399c22a23a8ac3a9e41128c1494aa5fa7e Agrego funcion "die mensaje [cod_error]" para facil manejo de errores criticos, agrego funcion "perr mensajes" para imprimir por salida de error y mejoro "lock proceso" para que devuelva error si no pudo crearlo (tipo is_lock). Algo de cleanup. --- diff --git a/inst/afimonio b/inst/afimonio index 2c40778..174c20c 100644 --- a/inst/afimonio +++ b/inst/afimonio @@ -5,9 +5,6 @@ BASE_DIR=$HOME/.antifraude . "$HOME/.antifraude/conf/afimonio.conf" . "$HOME/.antifraude/conf/antifraude.conf" -trap "finalize" INT -trap "finalize" TERM - # Es llamada por los trap para deslockear el afimonio finalize() { unlock "afimonio" @@ -53,15 +50,6 @@ checkfilename(){ #--------------------MAIN SCRIPT---------------------- -# Verifico no correr 2 veces -if is_lock "afimonio" ; then - echo "Ya hay una instancia de afimonio corriendo" - exit 1 -fi - -# Me lockeo por las dudas -lock "afimonio" - # Recupero las rutas a todos los directorios y archivos que necesito # Del antifraude DATADIR=$ANTI_DATADIR @@ -75,8 +63,15 @@ LOGDIR=$AFIM_LOGDIR LOGNAME=$AFIM_LOGFILE LOGFILE=$LOGDIR/$LOGNAME +# Capturo señales para salir bien (liberando el lock) +trap "finalize" INT +trap "finalize" TERM + +# Me lockeo +lock "afimonio" || die "No se puede correr, hay otra instancia corriendo!" + # Comienza el ciclo infinito que mueve los archivos -while [ true ]; do +while true; do for file in `ls $SOURCEDIR` ; do checkfilename $file if [ "$?" -eq 0 ]; then diff --git a/inst/util.sh b/inst/util.sh index 136ab7c..0bb46f1 100755 --- a/inst/util.sh +++ b/inst/util.sh @@ -1,4 +1,4 @@ -#/bin/sh +#/bin/bash ## Los scrips que incluyan deben definir BASE_DIR antes de incluirme! #BASE_DIR="$PWD" @@ -60,13 +60,14 @@ validar_solo_numeros () { } # Crea un archivo de lock para un script +# Devuelve: 0 si ok, 1 si ya esta lockeado, 2 si no pudo crear lock. lock () { - if is_lock "$1" ; then - # Ya esta loqueado, no lo vuelvo a crear - echo "No" - return - fi - echo "$$" > "$LOCK_DIR/$1.pid" + # si ya esta loqueado, no lo vuelvo a crear + is_lock "$1" && return 1 + # Si no puedo escribir en el dir de lock, da error + [ -w "$LOCK_DIR" ] || return 2 + echo $$ > "$LOCK_DIR/$1.pid" + return 0 } # Desbloquea el script @@ -97,21 +98,19 @@ validar_rango(){ return 1 fi } - -#leer "Ingrese un directorio" "/tmp" ALGO - -#echo "Ingresaste : $ALGO" - -# Test de preguntanto -#preguntar "Sos hombre (s/n)" "sn" OPT -#if [ "$OPT" == "s" ] ; then -# echo "Sos un mentiroso!!!" -#else -# echo "Jaja ... Trola!" -#fi +# Muestra mensaje y sale con código de error +# Uso: die mensaje [código de error = 1] +die() +{ + echo "$1" >&2 + exit ${2:-1} +} -# Test de preguntanto -#preguntar "Que preferis (drogas/cafe/vino/coca cola)" "drogas cafe vino \"coca cola\"" OPT +# Imprime mensaje por salida de error +# Uso: perr mensajes +perr() +{ + echo $@ >&2 +} -#echo "Vos decidis : $OPT"