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 algunas modificaciones. El siguiente enfoque combina algunos componentes para realizar el trabajo:
- Un comando
tell
para salir de la aplicación
- Una llamada de la línea de comandos para poner la computadora en suspensión
- Una llamada de la línea de comandos a los horarios 1 y 2 para un tiempo específico.
1. Decirle a la aplicación que salga
Esto puede ser tan simple como:
osascript -e 'tell application "AppName" to quit'
2. Poner la computadora a dormir
Echa un vistazo a 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 a una hora específica
Eche un vistazo a en mando. Este comando le brinda la posibilidad de especificar un tiempo para que se ejecute un comando. Tendrá que habilitar esta funcionalidad ya que no es la predeterminada. Para habilitar el daemon atrun
, 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 puede programarse para un tiempo específico emitiendo
echo "<command>" | at HH:MM
que funciona porque at
toma su entrada de stdin
de forma predeterminada. Un enfoque más simple es ejecutar los comandos listados en un archivo. Se puede ejecutar un archivo utilizando el indicador -f
, seguido del nombre del script que se ejecutará de la siguiente manera:
at -f /path/to/file HH:MM
Poniéndolo todo junto
Lo que sigue asume que atrun
está habilitado. Como ejemplo de juguete, digamos que quiero salir de Mail y poner la computadora en modo de suspensión a las 11PM. Me gustaría crear un archivo que contenga los comandos que quiero ejecutar de la siguiente manera:
osascript -e 'tell application "Mail" to quit'
pmset sleepnow
Guarde ese archivo en quit-and-sleep
y luego ejecútelo en la línea de comando
at -f /path/to/quit-and-sleep 23:00
Caveats
No realicé ninguna comprobación para asegurarme de que Mail se haya cerrado. El script también supone que nada más impedirá que la computadora entre en modo de suspensión. Lo he mantenido simple aquí como punto de partida para lo que quieres.