2 votos

Comprobar si un proceso se está ejecutando, si no ejecutarlo de nuevo en la Terminal

Hay una manera de comprobar periódicamente si un proceso se está ejecutando con (probablemente con Apple script, o algún otro script de shell) y si no, a continuación, ejecutarlo en la Terminal?

Tengo un script PHP que se necesita para funcionar, pero después de algún tiempo se rompe, así que tengo que empezar de nuevo.

Gracias.

5voto

yoliho Puntos 340

En OSX uso launchd a esto. launchd va a iniciar un comando de inicio de sesión o de inicio y si el proceso se muere se va a reiniciar.

El proceso es controlado por una .plist archivo con formato definido en Manzana docs el ejemplo en la página de manual para el caso de que usted pida.

  <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
   http://www.apple.com/DTDs/PropertyList-1.0.dtd >
   <plist version="1.0">
   <dict>
        <key>Label</key>
        <string>com.example.exampled</string>
        <key>ProgramArguments</key>
        <array>
             <string>exampled</string>
        </array>
        <key>KeepAlive</key>
        <true/>
   </dict>
   </plist>

Si desea iniciar cuando un usuario inicia sesión en el este archivo va en ~/Library/LaunchAgents. Si cuando se inicia el equipo, a continuación, /Library/LaunchDaemons (que no puede tener acceso a la interfaz gráfica de usuario), pero este se ejecuta como root a menos que se agregue un nombre de Usuario clave. (Gracias a @Gordon Davisson para la corrección y la relectura de Apple definiciones)

Para facilidad de ajuste de la .plist, puede utilizar Lingon.aplicación disponible en la Mac AppStore

3voto

user4416 Puntos 41

Si quería hacer esto a través de un script de shell que me gustaría hacer algo como esto:

#!/bin/sh
PROCESS=`ps A | grep PROCESS_NAME | grep -v grep`
if [ "$?" -ne "0" ]; then
        echo "not running"
        ### COMMAND TO EXECUTE HERE ###
        exit 1
fi

Usted podría llamar a que a través de cron cada minuto o así.

2voto

user4732 Puntos 179

Por qué usted necesita activamente encuesta para la secuencia de comandos? ¿Por qué no acaba de poner en un script de shell bucle y se reinicia cuando se produce un error.

#!/bin/sh

let c=1
while ! php -f myscript.php; do
    echo "The script has crashed $c times so far..."
    let "c=c+1"
done

En el caso de no fallar con gracia, la votación para la ejecución de un proceso no guardar. También puede seguir funcionando mientras no haciendo su trabajo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X