Foros del Web » Administración de Sistemas » Unix / Linux »

shell script en linux que compruebe si existe un proceso en ejecucion

Estas en el tema de shell script en linux que compruebe si existe un proceso en ejecucion en el foro de Unix / Linux en Foros del Web. Hola a todos. Tengo la siguiente duda: Necesito hacer un shell script que tiene que comprobar si cierto proceso cuyo pid esta almacenado en un ...
  #1 (permalink)  
Antiguo 22/12/2007, 13:58
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 9 meses
Puntos: 7
Sonrisa shell script en linux que compruebe si existe un proceso en ejecucion

Hola a todos. Tengo la siguiente duda:

Necesito hacer un shell script que tiene que comprobar si cierto proceso cuyo pid esta almacenado en un fichero está en ese momento ejecutándose. Si es así debe borrar un archivo y sino pues no hace nada.

La verdad que no consigo hacerlo.

Tengo puesto:

ps `cat id.txt`> result.txt

if[grep `cat id.txt`result.txt] then
rm result.txt
fi


Con la linea:

ps `cat id.txt`> result.txt

Almaceno en el fichero result.txt el resultado de ejecutar el comando "ps" sobre el pid almacenado en el fichero "id.txt". Hasta ahí todo perfecto.


La linea:

grep `cat id.txt`result.txt

Si existe el proceso en memoria entonces al ejecutar el comando "ps" me devolvío información sobre dicho proceso y estaría almacenado en el fichero result.txt. En caso contrario, en el fichero result.txt solo aparecería la cabecera que devuelve el comando ps cuando no encuentra el proceso.

Entonces con el grep anterior me debería devolver la linea que contiene el pid del proceso buscado en caso de que existe. En otro caso no me devolvería nada.

Es por ello que en el if compruebo si el resultado de ese grep es vacio o no. Si no es vacio significa que el proceso existe.


Si ejecuto esa linea sin el "if" desde la linea de comandos me funciona bien pero cuando lo meto en un fichero y lo ejecuto como he puesto al principio con el "if" me sale:

linea 3: syntax error near unexpected token 'fi'
linea 3: 'fi'


Tampoco estoy seguro de si la comprobación que hago con el if esta bien.

Espero que alguien me oriente un poco porque estoy bastante perdido.


Saludos.
  #2 (permalink)  
Antiguo 22/12/2007, 14:56
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Re: shell script en linux que compruebe si existe un proceso en ejecucion

Sería mucho mejor si almacenaras toda esa maraña de resultados en variables para poder ver mejor el código. De resto en el if no estás haciendo ninguna comparación. Tienes que comparar o hacer algo, mirar si existe, te dejo este mini tutorial de principiantes para shell para que lo revises concienzudamente. Es más sencillo de lo que parece.

Sin embargo en internet hay muchisima información. Si no entiendes algo pregunta aquí nuevamente.

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #3 (permalink)  
Antiguo 23/12/2007, 09:21
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 9 meses
Puntos: 7
Re: shell script en linux que compruebe si existe un proceso en ejecucion

Gracias por la ayuda. El tutorial muy bueno.

Ahora mi problema es que no quiero que el resultado me salga por pantalla y no lo consigo. Estaba utilizando una variable para almacenarlo pero me sigue apareciendo por pantalla.

Tengo puesto:

ps `cat id.txt` > ps.txt

a= grep `cat id.txt` ps.txt | wc -l


Con el wc -l del final cuento el numero de veces que aparece el pid que busco dentro del fichero ps.txt. Me devuelve 0 si no lo encuentra o 1 en caso contrario.

Me funciona perfecto salvando que me saca el resultado por pantalla y yo quiero que se quede almacenado en la variable "a" que declare.

No se si es que no se puede asignar el resultado de un comando a una variable.....


Saludos.
  #4 (permalink)  
Antiguo 23/12/2007, 10:40
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Re: shell script en linux que compruebe si existe un proceso en ejecucion

Con los backsticks ejecutas el comando y lo guardas en la variable, los backsticks son estos ( ` ) igual que los que usaste para cat id.txt pero en este caso desde el grep hasta el wc.

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:42.