2 votos

Shell script para reiniciar un proceso, si es que no responde

Necesito una aplicación java para ejecutar 24/7 en mi mac. Lamentablemente, el proceso de JVM a veces se queda atascado y por lo tanto la aplicación java no responde.

Hay un possebility para detectar si un determinado proceso se ha estrellado (o al menos no está en un buen estado de ejecución) y reiniciar este proceso de la siguiente?

He encontrado

ps aux|grep java

que enumera el proceso java (/usr/bin/java)

Ahora necesito saber cómo ver el estado del proceso de códigos y cómo reiniciar este proceso en particular, por ejemplo, un script de shell.

Por CIERTO, el estado del proceso es T lo que significa que se detuvo por lo que yo sé.

EDITAR: Por desgracia cuatro sugerencias no funciona en mi máquina. He configurado un agente global y el tarro se abre correctamente, pero el proceso todavía no después de un cierto período de tiempo. Extrañamente el proceso en el monitor de actividad no está marcado como no responde, mientras que el menú de contexto de la base de acoplamiento punto a (ver figura) enter image description here

2voto

Rich Puntos 2429

Mira el launchctl que es una interfaz a launchd demonio.

Este demonio principal tarea es cuidar de todo el sistema y los usuarios de los demonios. Este cuidado incluye la posibilidad de reiniciar el demonio siempre que se cierra o se bloquea.

Para empezar, te aconsejo que leas:

man launchd
man launchctl

A continuación, echar un vistazo a uno de los más simples plist archivos utilizados por el sistema para ayudarle a escribir su propio ser a la encuesta de la JVM y reinicie si es necesario:

/System/Library/LaunchDaemons/com.apple.autofsd.plist

1voto

John Keates Puntos 711

Uso LaunchD, es lo que Mac OS X utiliza la misma para la ejecución y seguimiento de los programas. Usted tendrá que crear una LaunchAgent o LaunchDaemon archivo, y usted puede especificar que se debe morir y reinicia si se alcanza el estado T.

0voto

SPRBRN Puntos 1008

De una manera tal vez usando applescript como se muestra aquí. Otro tal vez por la herramienta de secuencias de comandos sikuli.

Sikuli relojes de la pantalla y puede responder basándose en lo que ve. Así, si se encuentra Not Responding en la pantalla puede ser configurada para actuar.

Aquí es un hilo de la discusión de un problema similar al tuyo, que también le da la siguiente secuencia de comandos como una solución a su problema. El sikuli sitio web dispone de toda la documentación que usted necesita. La buena suerte.

while True:

def Kill(e):

openApp("/Users/Admin/Desktop/KillPrintSmith.app")

def Open(e):

openApp("/Applications/PrintSmith WS Folder/PrintSmith WS.app")

onAppear(#screenshot of Not Responding Text#,Kill)

onVanish(#screenshot of Printsmith dock icon#,Open)

observe() 

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