Ho due script che aprono e chiudono un'app; diciamo che è il Calculator.app
incorporato. Lo script "start" utilizza /usr/bin/open
per avviare l'app, quindi un AppleScript a una riga per impostare la visibilità dell'app su false
.
Questa è la totalità dello script "stop":
#!/bin/bash
osascript -e 'tell app "Calculator" to quit'
Sto eseguendo questi script da un LaunchDaemon che li chiama in determinati orari fissi della settimana.
Lo strano comportamento che sto vedendo è che a volte, dopo lo script "stop", l'icona Dock dell'applicazione mantiene il puntino (suggerendo che sia ancora in esecuzione). Tuttavia:
- facendo clic con il pulsante destro del mouse sull'icona del dock viene visualizzato il messaggio "L'applicazione non risponde"
- forzare l'uscita dal menu dell'icona del Dock non fa nulla
-
ps
non mostra alcun processo della Calcolatrice in esecuzione
E, la maggior parte sconcertante, tentando di lanciare nuovamente Calcolatrice (tramite open
, tramite Spotlight, o facendo doppio clic sulla sua icona) produce una finestra di dialogo modale che dice L'applicazione "Calcolatrice" non è più aperta.
lsof
mostra queste voci che potrebbero essere correlate:
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
Le mie domande:
- Perché il mio script di "interruzione" potrebbe non riuscire a chiudere in modo pulito l'app?
- A parte il riavvio, c'è un modo per far uscire l'app da questo stato di zombie?
- Come posso modificare il mio script per essere sicuro che l'app si chiuda correttamente?