Suponho que você gostaria de iniciar esse procedimento, em vez de executá-lo em um horário agendado regularmente.
Minha abordagem seria iniciar isso na linha de comando, mas qualquer comando pode ser executado em um componente de script shell de um script Automator com algumas modificações. A abordagem a seguir combina alguns componentes para realizar o trabalho:
- Um
tell
comando para sair do aplicativo
- Uma chamada de linha de comando para colocar o computador em suspensão
- Uma chamada de linha de comando para agendar 1 e 2 para um horário específico.
1. Dizer ao aplicativo para sair
Isso pode ser tão simples quanto:
osascript -e 'tell application "AppName" to quit'
2. Colocando o computador em suspensão
Dê uma olhada em pmset
mais detalhes, mas emitir o seguinte comando colocará seu computador em suspensão:
pmset sleepnow
3. Planejando uma operação para ser executada em um horário específico
Dê uma olhada no comando at . Este comando permite especificar um horário para a execução de um comando. Você precisará habilitar essa funcionalidade, pois não é por padrão. Para ativar o atrun
daemon, execute o seguinte comando [referência no SU] :
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Depois de ativar atrun
, qualquer comando pode ser agendado para um horário específico, emitindo
echo "<command>" | at HH:MM
que funciona porque at
recebe sua entrada stdin
por padrão. Uma abordagem mais simples é executar comandos listados em um arquivo. Um arquivo pode ser executado usando o -f
sinalizador, seguido pelo nome do script a ser executado assim:
at -f /path/to/file HH:MM
Juntando tudo
O que segue assume que atrun
está ativado. Como exemplo de brinquedo, digamos que eu quero sair do Mail e colocar o computador em repouso às 23:00. Eu criaria um arquivo contendo os comandos que desejo executar da seguinte maneira:
osascript -e 'tell application "Mail" to quit'
pmset sleepnow
Salve esse arquivo quit-and-sleep
e, em seguida, execute na linha de comando
at -f /path/to/quit-and-sleep 23:00
Ressalvas
Não fiz nenhuma verificação para garantir que o Mail realmente fosse fechado. O script também pressupõe que nada mais atrapalhará o computador. Eu mantive isso simples aqui como ponto de partida para o que você deseja.