de fondo
He estado trabajando en un script de copia de seguridad que se ejecuta en ocasiones a través de launchd. Cuando se ejecuta, se lo pide a mí con algo como:
osascript -e "display dialog \"Is now a good time to back up?\""
Esto funciona muy bien cuando el sistema es abierto/en línea, pero parece que se bloquea si la tapa está cerrada o la pantalla está bloqueada/off. Una tolerable manera de probar esto es SSH en el sistema como el mismo usuario con el escritorio activo, ejecutar un comando como el de arriba, y observe que el cuadro de diálogo emergente.
Si puedo ejecutar el mismo comando con el sistema bloqueado, sólo se bloquea. Si puedo desbloquear o abrir el sistema, el comando no acabado, y el cuadro de diálogo no aparece.
Parece que puede simular la misma condición como esta:
pmset displaysleepnow; osascript -e "display dialog \"never never land\""
pregunta
Es alguien consciente de una forma de detectar esta condición (en launchd, bash, o applescript nivel) para que yo pueda hacer cualquiera de las siguientes:
- mantener el puesto de trabajo, desde la ejecución hasta que el sistema está activo
- el sueño de la secuencia de comandos hasta que me puede mostrar un cuadro de diálogo sin ella colgando
- abortar la secuencia de comandos se ejecute antes de que se cuelga
No estoy muy interesado en ella, pero de lo mejor que he podido averiguar hasta el momento implica la colocación de un largo tiempo de espera en el primer cuadro de diálogo en el script y el rescate si no se responde, es decir:
osascript -e "display dialog \"Is now a good time to back up?\" giving up after 600"