On Fri, Aug 22 2014, Hugo Florentino wrote:

> Bueno ya encontré el problema, en realidad era una tontería.
>
> El comando ps devuelve los pid sin numero delante solo si coincide que 
> en la lista de procesos wget es uno de los últimos, pero en caso 
> contrario hay espacios delante, de modo que utilicé sed como una 
> alternativa más segura para obtener el pid.

Cierto, «ps» alinea los números a la derecha, adicionando espacios al
principio.

> En fin, que el script quedó así:
>
> #!/bin/sh
>
> WGET_PROCNUM=$(ps ax | grep -v grep | grep 'wget --limit-rate=' | sed 
> -r 's/^\s*([0-9]+)\s+.*/\1/')
>
> if [ ! -z $WGET_PROCNUM ]; then
>    kill -s SIGTERM $WGET_PROCNUM
> fi
>
> unset $WGET_PROCNUM

Esto te dará el mismo tipo de error cuando tengas más de un «wget»
corriendo:

$ wget -i- &
[1] 3178
$ WGET_PROCNUM=$(ps ax opid= ocomm= | sed 's/^\s*//' | grep wget | cut -d" " 
-f1)
$ echo $WGET_PROCNUM
3178
$ [ ! -z $WGET_PIDS ] && echo "¡muere hereje!"
¡muere hereje!

Y el hereje morirá de seguro. Pongamos otro hereje: 

$ wget -i- &
[2] 3193
$ WGET_PROCNUM=$(ps ax opid= ocomm= | sed 's/^\s*//' | grep wget | cut -d" " 
-f1)
$ echo $WGET_PROCNUM
3178 3193
$ [ ! -z $WGET_PIDS ] && echo "¡muere hereje!"
bash: [: 3178: binary operator expecte
$ [ ! -z "$WGET_PIDS" ] && echo "¡muere hereje!"
¡muere hereje!

Conclusión: necesitas las comillas o no tendrás inquisición.

Servilio

-- 
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a