Supongo que le gustaría iniciar este procedimiento en lugar de ejecutarlo a una hora programada regularmente.
Mi enfoque sería iniciar esto desde la línea de comandos, pero cualquier comando puede ejecutarse en un componente de script de shell de un script de Automator con alguna modificación. El siguiente enfoque combina algunos componentes para hacer el trabajo:
- Un
tell
comando para salir de la aplicación.
- Una llamada de línea de comandos para poner la computadora en suspensión
- Una llamada de línea de comandos para programar 1 y 2 para un tiempo específico.
1. Diciéndole a la aplicación que abandone
Esto puede ser tan simple como:
osascript -e 'tell application "AppName" to quit'
2. Poner la computadora a dormir
Eche un vistazo pmset
para obtener más detalles, pero emitir el siguiente comando pondrá su computadora en suspensión:
pmset sleepnow
3. Programar una operación para que se ejecute en un momento específico
Echa un vistazo al comando at . Este comando le brinda la capacidad de especificar una hora para que se ejecute un comando. Tendrá que habilitar esta funcionalidad, ya que no es por defecto. Para habilitar el atrun
demonio, ejecute el siguiente comando [referencia en SU] :
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Una vez que haya habilitado atrun
, cualquier comando se puede programar para un tiempo específico emitiendo
echo "<command>" | at HH:MM
que funciona porque at
toma su entrada de stdin
forma predeterminada. Un enfoque más simple es ejecutar comandos enumerados en un archivo. Se puede ejecutar un archivo utilizando el -f
indicador, seguido del nombre del script que se ejecutará de esta manera:
at -f /path/to/file HH:MM
Poniendolo todo junto
Lo que sigue supone que atrun
está habilitado. Como ejemplo de juguete, digamos que quiero salir de Mail y poner la computadora a dormir a las 11 p.m. Crearía un archivo que contiene los comandos que quiero ejecutar de la siguiente manera:
osascript -e 'tell application "Mail" to quit'
pmset sleepnow
Guarde ese archivo quit-and-sleep
y luego ejecútelo en la línea de comando
at -f /path/to/quit-and-sleep 23:00
Advertencias
No hice ninguna comprobación para asegurarme de que Mail realmente se cerró. El script también asume que nada más va a obstaculizar el sueño de la computadora. Lo he mantenido simple aquí como punto de partida para lo que quieres.