Tengo dos scripts que abren y cierran una aplicación; digamos que es el Calculator.app
incorporado. La secuencia de comandos de "inicio" usa /usr/bin/open
para iniciar la aplicación, luego un AppleScript de una línea para establecer la visibilidad de la aplicación en false
.
Esta es la totalidad de la secuencia de comandos "stop":
#!/bin/bash
osascript -e 'tell app "Calculator" to quit'
Estoy ejecutando estos scripts desde un LaunchDaemon que los llama a ciertas horas fijas de la semana.
El extraño comportamiento que veo es que a veces, después de que se ejecuta el script "detener", el icono del Dock de la aplicación retiene su pequeño punto (lo que sugiere que aún se está ejecutando). Sin embargo:
- al hacer clic con el botón derecho en el icono del Dock aparece "La aplicación no responde"
- forzar el cierre a través del menú del icono del Dock no hace nada
-
ps
no muestra ningún proceso de Calculadora en ejecución
Y, lo que es más desconcertante, al intentar iniciar la Calculadora de nuevo (a través de open
, a través de Spotlight o haciendo doble clic en su icono) aparece un diálogo modal que dice La aplicación "Calculadora" ya no está abierta.
lsof
muestra estas entradas que podrían estar relacionadas:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Spotlight 443 jteach 54r DIR 1,4 102 28977573 /Applications/Calculator.app
Notificat 476 jteach txt REG 1,4 37933 29214948 /System/Library/Frameworks/NotificationCenter.framework/PlugIns/com.apple.ncplugin.calculator.appex/Contents/Resources/Assets.car
Notificat 476 jteach 8r REG 1,4 37933 29214948 /System/Library/Frameworks/NotificationCenter.framework/PlugIns/com.apple.ncplugin.calculator.appex/Contents/Resources/Assets.car
Mis preguntas:
- ¿Por qué mi secuencia de comandos "detener" no puede hacer que la aplicación salga limpiamente?
- Si no se reinicia, ¿hay alguna forma de que la aplicación pueda salir de este estado de zombie?
- ¿Cómo puedo modificar mi secuencia de comandos para asegurarme de que la aplicación se cierre correctamente?