Después de mucha investigación, prueba y error, he llegado a la conclusión de que no hay una manera confiable de hacerlo. Por lo tanto, hemos utilizado un enfoque que solo funcionará con ciertas aplicaciones, en este caso, una que modifica un archivo cada nSegundos. Obviamente, si la aplicación se ha bloqueado, ha salido o se ha bloqueado, esto no sucederá.
Mi Apple Script monitorea este archivo, y si detecta que no se modificó después de nSegundos, forzará un reinicio de la máquina.
-- 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