Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ToLoMaTo en 22 Enero 2016, 14:03 pm



Título: Duda-BASH-- Monitorización de procesos
Publicado por: ToLoMaTo en 22 Enero 2016, 14:03 pm
Buenas a todos!

Es la primera vez que publico en este foro, pero os llevo siguiendo desde hace unos años, primero de todo daros las gracias por las dudas que me habéis resuelto en el pasado.

Bueno os comento, el tema es que estoy creando un script en bash para clase, este script debe ejecutar ciertas sentencias SQL y monitorizar el consumo de estas.

En mi caso, existe una función launchQuery que recibe por parámetro el string con la sentencia deseada y la ejecuta. Esta función la lanzo en segundo plano con el operador '&' recojo su PID con el operador '$!' y mientras exista ese PID ejecuto el programa ps -p PID.

Aquí es donde esta el problema, cuando ejecuto el ps(también he probado con top) me dice que el PID no es valido y creo que es porque cuando lo lanzo ya ha terminado la query.

Creéis que estoy haciendo algo mal o más bien es un tema de concepto. El código no lo tengo a mano en 2 horitas lo subo.

De antemano gracias a todos. Un saludo.


Título: Re: Duda-BASH-- Monitorización de procesos
Publicado por: ToLoMaTo en 22 Enero 2016, 15:52 pm
Este seria el código:

       launchQuery "$q" &
      pid="$(ps -p $! | grep bash)"
       ps -p $pid -l | tail -n1 >> log.temp
      control=0
      while [ $control -eq 0 ]
      do
         if [ -z "$pid" ]
         then
                wait $pid
               control=1
         else
            ps -p $pid -l | tail -n1 >> log.temp
                sleep 5
         fi
         pid="$(ps -p $! | grep bash)"
      done