}
\layout Section
+AFIMONIO_DAEMON.SH
+\layout Subsection
+
+Tipo de comando
+\layout Standard
+
+Auxiliar, escrito en
+\family typewriter
+bash
+\family default
+.
+\layout Subsection
+
+Justificación de su uso
+\layout Standard
+
+Sirve para correr
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+ en segundo plano, desasociado de la terminal.
+\layout Subsection
+
+Archivos de Input
+\layout Standard
+
+Ninguno, toma los datos necesarios por la entrada estándar, aunque es común
+ redireccionarle el archivo
+\family typewriter
+oridesti.txt
+\family default
+.
+ De la entrada estándar toma los códigos de origen y destino.
+ Cada código debe encontrarse en una línea y al comienzo de ésta.
+ Sólo toma los 2 primeros caracteres, e ignora el resto de la línea (para
+ compatibilidad con el archivo oridesti.txt).
+\layout Subsection
+
+Archivos de Output
+\layout Standard
+
+Crea una cantidad
+\family typewriter
+N
+\family default
+ (especificada por el usuario) de archivos con nombre y formato de
+\emph on
+Archivo de Llamadas
+\emph default
+ en el directorio actual.
+ Tanto el nombre como la cantidad de líneas y su contenido es generado aleatoria
+mente (respetando el formato mencionado y con valores racionales).
+\layout Subsection
+
+Parámetros
+\layout Standard
+
+La invocación es al estilo SysV, tomando como parámetro la acción a realizar,
+ que puede ser:
+\layout Description
+
+start Arranca el
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+.
+\layout Description
+
+stop Detiene el
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+.
+\layout Description
+
+status Indica si
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+ está corriendo o no.
+\layout Subsection
+
+Opciones
+\layout Standard
+
+Al comienzo del script, abajo de
+\family typewriter
+Configuración
+\family default
+, se pueden cambiar algunas variables:
+\layout Description
+
+WAIT Cantidad de segundos a esperar para que arranque o se detenga
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+ antes de asumir un error.
+\layout Description
+
+DAEMON Nombre del programa a ejecutar.
+ Este programa es lo suficientemente genérico como para correr cualquier
+ comando en modo
+\emph on
+daemon
+\emph default
+, por eso se provee una variable de configuración para cambiar el comando
+ a ejecutar.
+\layout Subsection
+
+Ejemplos de invocación
+\layout Subsubsection
+
+
+\family typewriter
+./afimonio_daemon.sh start
+\layout Standard
+
+Arranca el
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+.
+\layout Subsubsection
+
+
+\family typewriter
+./afimonio_daemon.sh stop
+\layout Standard
+
+Detiene el
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+.
+\layout Subsubsection
+
+
+\family typewriter
+./afimonio_daemon.sh status
+\layout Standard
+
+Si
+\family typewriter
+\series bold
+afimonio
+\family default
+\series default
+ está corriendo lo indica con un mensaje y muestra su PID.
+ Si no está corriendo da otro mensaje indicándolo.
+\layout Subsubsection
+
+
+\family typewriter
+./afimonio_daemon.sh
+\layout Standard
+
+Da un mensaje de ayuda.
+\layout Subsection
+
+Código Fuente
+\layout LyX-Code
+
+#!/bin/bash
+\layout LyX-Code
+
+\layout LyX-Code
+
+# Configuración
+\layout LyX-Code
+
+WAIT=10
+\layout LyX-Code
+
+DAEMON=afimonio
+\layout LyX-Code
+
+\layout LyX-Code
+
+# --------------- SCRIPT ---------------------
+\layout LyX-Code
+
+BASE_DIR="$HOME/.antifraude"
+\layout LyX-Code
+
+.
+ "$BASE_DIR/conf/$DAEMON.conf"
+\layout LyX-Code
+
+.
+ "$BASE_DIR/util.sh"
+\layout LyX-Code
+
+\layout LyX-Code
+
+ayuda () {
+\layout LyX-Code
+
+ perr "Parámetros válidos : start, stop, status"
+\layout LyX-Code
+
+}
+\layout LyX-Code
+
+\layout LyX-Code
+
+case "$1" in
+\layout LyX-Code
+
+ "start")
+\layout LyX-Code
+
+ echo -n "Iniciando demonio '$DAEMON' en modo daemon "
+\layout LyX-Code
+
+ if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo " ERROR!"
+\layout LyX-Code
+
+ perr "$DAEMON ya está corriendo"
+\backslash
+
+\layout LyX-Code
+
+ "(PID=`lock_pid $DAEMON`)."
+\layout LyX-Code
+
+ exit 1
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ nohup "$AFIM_BINDIR/$DAEMON" > /dev/null &
+\layout LyX-Code
+
+ for i in `seq $WAIT`; do
+\layout LyX-Code
+
+ if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo " OK! (PID=`lock_pid $DAEMON`)"
+\layout LyX-Code
+
+ exit 0
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ echo -n '.'
+\layout LyX-Code
+
+ sleep 1;
+\layout LyX-Code
+
+ done
+\layout LyX-Code
+
+ # Tardó más de 5 segundos en arrancar, algo anda mal...
+\layout LyX-Code
+
+ echo "ERROR!"
+\layout LyX-Code
+
+ perr "$DAEMON tardó más de $WAIT segundos en arrancar,"
+
+\backslash
+
+\layout LyX-Code
+
+ "probablemente haya algún problema."
+\layout LyX-Code
+
+ exit 1
+\layout LyX-Code
+
+ ;;
+\layout LyX-Code
+
+ "stop")
+\layout LyX-Code
+
+ echo -n "Parando el demonio '$DAEMON' "
+\layout LyX-Code
+
+ if ! is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo " ERROR!"
+\layout LyX-Code
+
+ perr "$DAEMON no esta corriendo."
+\layout LyX-Code
+
+ exit 1
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ kill `lock_pid $DAEMON`
+\layout LyX-Code
+
+ for i in `seq $WAIT`; do
+\layout LyX-Code
+
+ if ! is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo " OK!"
+\layout LyX-Code
+
+ exit 0
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ echo -n '.'
+\layout LyX-Code
+
+ sleep 1;
+\layout LyX-Code
+
+ done
+\layout LyX-Code
+
+ # Tardó más de 5 segundos en parar, algo anda mal...
+\layout LyX-Code
+
+ echo "ERROR!"
+\layout LyX-Code
+
+ perr "$DAEMON tardó más de $WAIT segundos en parar,"
+\backslash
+
+\layout LyX-Code
+
+ "probablemente haya algún problema."
+\layout LyX-Code
+
+ exit 1
+\layout LyX-Code
+
+ ;;
+\layout LyX-Code
+
+ "status")
+\layout LyX-Code
+
+ if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+ echo "$DAEMON está corriendo actualmente"
+\backslash
+
+\layout LyX-Code
+
+ "(PID=`lock_pid $DAEMON`)."
+\layout LyX-Code
+
+ else
+\layout LyX-Code
+
+ echo "$DAEMON no está corriendo."
+\layout LyX-Code
+
+ fi
+\layout LyX-Code
+
+ ;;
+\layout LyX-Code
+
+ *) ayuda ;;
+\layout LyX-Code
+
+esac
+\layout Section
+
CALLGEN
\layout Subsection