Tengo dos scripts que abren y cierran una aplicación; digamos que es el builtin Calculator.app
. El "start" script utiliza /usr/bin/open
para lanzar 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 "parada" script:
#!/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 comportamiento extraño que estoy viendo es que a veces, después de que se ejecuta el script de "parada", el icono del Dock de la aplicación conserva su puntito (lo que sugiere que sigue en ejecución). Sin embargo:
- al hacer clic con el botón derecho del ratón en el icono del Dock aparece "La aplicación no responde"
- forzar la salida a través del menú del icono del Dock no hace nada
ps
no muestra ningún proceso de la Calculadora en ejecución
Y, lo más desconcertante, intentar lanzar de nuevo la Calculadora (vía open
, a través de Spotlight, o haciendo doble clic en su icono) produce un diálogo modal que dice La aplicación "Calculadora" ya no se abre.
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 "stop" script no puede hacer que la aplicación salga limpiamente?
- Sin reiniciar, ¿hay alguna forma de sacar la aplicación de este estado de zombi?
- ¿Cómo puedo modificar mi script para asegurarme de que la aplicación se cierra correctamente?