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.