Duda-BASH-- Monitorización de procesos

Iniciado por ToLoMaTo, 22 Enero 2016, 14:03 PM

0 Miembros y 1 Visitante están viendo este tema.

ToLoMaTo

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.

ToLoMaTo

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