4 votos

¿Cómo forzar la salida de la aplicación Applescript desde la terminal?

Escribí un applescript que enciende mis luces. He exportado como una aplicación con el nombre de "LightsOn", y aparece con ese nombre en el monitor de actividad.

LightsOn in Activity Monitor

Bajo ciertas circunstancias, esta aplicación se queda atascado. Puedo salir en vigor desde el Monitor de Actividad, pero quiero ser capaz de hacerlo a partir de una secuencia de comandos. killall LightsOn no funciona, me han dicho que no matching processes belonging to you were found.

Cómo puede forzar el cierre de esta aplicación desde el terminal? O, ¿cómo puedo descubrir el nombre apropiado para killall?

3voto

moodforaday Puntos 2633

Intente esto:

ps auxwww | fgrep -v fgrep | fgrep -i LightsOn

Que debe mostrar el proceso de búsqueda de información.

También puede intentar pkill que debería funcionar como este:

pgrep -fl LightsOn

Si que te muestra el PID, entonces se puede pasar a pkill:

pkill -9 -f LightsOn

Cuando se ejecuta pkill -9, no está diciendo que la aplicación termine en sí mismo, sino que está indicando al sistema operativo para detener la ejecución del programa, no importa lo que el programa está haciendo.

Cuando la aplicación se queda atascado el envío de la kill sin especificar la señal #, se asignará automáticamente a la señal de <15>, que significa pedirle a la aplicación para terminar el auto, no se puede hacer que mientras atascado.

2voto

user3439894 Puntos 5883

La razón killall LightsOn no trabaja es porque todas ejecutar AppleScript aplicación del proceso nombre es applet. Por ejemplo, la ruta del archivo ejecutable es:

../LightsOn.app/Contents/MacOS/applet

En general, y suponiendo que el proceso(es) es(son) no se ahorcó, uno podría usar killall applet , sin embargo, que va a terminar todos con AppleScript aplicaciones, y por supuesto que puede no ser deseable.

Cuando un proceso está bloqueado, usted necesitará utilizar un KILL de la señal, por ejemplo:

killall -KILL applet

Sin embargo, pkill es el camino a seguir fácilmente el objetivo específico de AppleScript aplicación y porque es colgado... el uso de un KILL de la señal, por ejemplo:

pkill -9 -f LightsOn

O:

pkill -KILL -f LightsOn

Nota en este ejemplo, -9 es sólo otra manera de decir -KILL.

Ahora con pkill y el uso de la -f opción, se puede utilizar más de la completa lista de argumentos, por ejemplo:

pkill -9 -f /Applications/LightsOn.app/Contents/MacOS/applet

Entonces no hay ninguna ambigüedad en cuanto a que applet proceso uno se dirige. Uno puede utilizar como parte de la completa lista de argumentos como que uno siente que es necesario orientar el correcto proceso.

Por ejemplo, pkill -9 -f LightsOn terminará un AppleScript aplicación llamada NoLightsOn, por lo que siempre uso suficiente de la completa lista de argumentos para terminar el proceso correcto.


Para la referencia:

De la pkill el hombre de la página:

 -f          Match against full argument lists.  The default is to match
             against process names.

De la killall el hombre de la página:

 Some of the more commonly used signals:

 1       HUP (hang up)
 2       INT (interrupt)
 3       QUIT (quit)
 6       ABRT (abort)
 9       KILL (non-catchable, non-ignorable kill)
 14      ALRM (alarm clock)
 15      TERM (software termination signal)

Tenga en cuenta que esto es sólo parcial de la señal de la lista y se utiliza con muchos de los diferentes utilidades que puede terminar un proceso. Ver las páginas de manual de las utilidades que se utiliza para obtener información adicional.

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