Dopo molte ricerche, prove ed errori, sono giunto alla conclusione che non esiste un modo affidabile per farlo. Quindi ho usato un approccio che funzionerà solo con determinate applicazioni, in questo caso uno che modifica un file ogni nSeconds. Ovviamente se l'applicazione si è arrestata in modo anomalo, è terminata o è bloccata, ciò non accadrà.
My Apple Script controlla questo file e, se rileva che non è stato modificato dopo nSeconds, forzerà il riavvio della macchina.
-- Watchdog Script --
--
-- Continually checks that a file is modified, otherwise will force a system restart
-- 2013 David Penney
-- Config
set HFSpath to "app/data/logfile.log"
set username to "user"
set passwrd to "pass"
set updateIntervalSeconds to 5
-- End Config
set lastModTime to "Deltron 3030"
delay (60)
repeat
tell application "System Events"
set newModTime to modification date of file HFSpath
end tell
if newModTime is equal to lastModTime then
do shell script "shutdown -r now" user name username password passwrd with administrator privileges
log "booooooM"
else
set lastModTime to newModTime
log "coolio"
end if
delay (updateIntervalSeconds)
end repeat