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

Saber si un sh esta corriendo

Estas en el tema de Saber si un sh esta corriendo en el foro de Unix / Linux en Foros del Web. Buenas, tengo freebsd en mi servidor y necesito saber si un script sh esta corriendo y si no lo esta que lo ejecute, lo que ...
  #1 (permalink)  
Antiguo 28/10/2011, 09:37
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Saber si un sh esta corriendo

Buenas, tengo freebsd en mi servidor y necesito saber si un script sh esta corriendo y si no lo esta que lo ejecute, lo que hago es:

Código PHP:
if ps waux grep -v grep grep miscript.sh  
then
     
echo "miscript.sh service running, everything is fine"
else
    echo 
"miscript.sh is not running"
    
echo "Start $miscript.sh"
    
ejecuto script...
   
    
fi 
Pero no me esta funcionando, lo veo ejecutar 3 o 4 veces o mas haciendo grep, alguna idea?
  #2 (permalink)  
Antiguo 28/10/2011, 15:16
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Saber si un sh esta corriendo

¿Que no funciona quiere decir que no es capaz de detectar que el script no está ejecutando, o que lo arranca igual aunque lo encuentre?

En principio, de forma genérica, tu código de detección se ve correcto.


Saludos.
  #3 (permalink)  
Antiguo 29/10/2011, 17:34
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Respuesta: Saber si un sh esta corriendo

Yo de scripting no sé prácticamente nada, pero creo que falta algo en esa sintaxis, concretamente en la condición. ¿La condición no debería ser "si la ejecución de este comando da tal resultado"? Es que no se está hablando del resultado, simplemente se mete el comando a piñón.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #4 (permalink)  
Antiguo 30/10/2011, 12:43
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Saber si un sh esta corriendo

pues de hecho tal y como está es correcto.

if comprueba es que el valor de retorno del programa que ejecuta sea 0 (todo correcto), eso es todo.

Aunque normalmente se vea como

if [ 0 -eq 0]

la verdad es que el "[" no es un elemento sintáctico sino un ejecutable: es un alias al comando "test" y en muchos sistemas de hecho existe en la carpeta /bin un binario de nombre "[". El comando 'test' en particular se encarga de comprobar la condición y devuelve cero si todo fue correcto.

En este caso se evalúa el valor de retorno del grep, que es cero si hay coincidencias. Por lo que efectivamente, si grep encuentra algo, se ejecuta el bloque del IF.


saludos.

Etiquetas: servidor
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 12:50.