MacBook Pro 2010 executando o OS X Lion.
É possível executar scripts em eventos de suspensão e ativação?
Meu aplicativo específico é que eu tenho volumes Truecrypt sincronizados com o Dropbox que uso regularmente no meu MacBook e no iMac. Eu raramente desligo meu MBP, pois fechar a tampa é muito mais rápido e fácil, mas isso significa que tenho que lembrar de desmontar meus volumes do Truecrypt e deixá-los sincronizar novamente antes de fechar o MBP. É trivial o suficiente para montar / desmontar scripts, mas eu gostaria de dar um passo adiante e fazer com que esses scripts sejam executados automaticamente.
fonte
O SleepWatcher pode ser útil.
Da descrição: Ele pode ser usado para executar um comando Unix quando o Mac ou a tela do Mac entra no modo de suspensão ou acorda, após um determinado período sem interação do usuário ou quando o usuário retoma a atividade após um intervalo ou quando a energia o suprimento de um notebook Mac está conectado ou desconectado. Também pode enviar o Mac para o modo de suspensão ou recuperar o tempo desde a última atividade do usuário.
Está funcionando bem para mim no 10.6.8. Várias versões estão disponíveis para suportar 10.1 (!) A 10.7
fonte
brew install sleepwatcher
. E veja este post , é muito útil. O utilitário SleepWatcher também suporta o OS X El Capitan (10.11).Este é meu próprio aplicativo, portanto, considere isso, mas o ControlPlane tem a capacidade de executar ações com base no modo de suspensão / ativação. Você o encontrará em http://www.controlplaneapp.com/ .
O ControlPlane é um fork do MarcoPolo e foi atualizado para rodar no Snow Leopard e Lion.
fonte
Desenvolvi o seguinte simples Daemon de Inicialização para fornecer um gatilho 'wake' para scripts no Leopard:
Você pode substituir 'say w' pelo seu código. Escrevo uma data para z, mas você pode alterar isso para escrever qualquer coisa. Pode ser necessário aumentar 'ExitTimeOut' para alguns scripts. Meu Daemon de inicialização reside em /Library/LaunchDaemons/wake-alert.plist
O Daemon de Inicialização observa DirectoryService.server.log e grava em um arquivo temporário, desde que o arquivo esteja vazio. O arquivo é limpo por uma entrada de log 'Sleep' e por Shut Down.
Se você usar 'troca rápida de usuário' para suspensão, verá que os scripts que requerem um usuário conectado tentarão executar muito cedo e falharão, a menos que você modifique o Daemon de Inicialização - talvez grep 'Succeeded' em 'secure.log'.
fonte
/Library/Logs/DirectoryService/DirectoryService.server.log
não existe em High Sierra (10.13).Outro programa que você pode descobrir e ficar tentado a experimentar é o EventScripts . Embora seja um programa muito impressionante que eu recomendaria em geral, depois de testá-lo para esse fim, ele NÃO parece realmente capaz de disparar scripts com rapidez suficiente para serem executados antes que o Mac entre no modo de suspensão. não será executado até que o Mac acorde, o que (obviamente) derrota o objetivo.
Espero salvar você e qualquer outra pessoa lendo isso nas horas de teste que levei para chegar a essa conclusão. Lamento dizer que falhou, no entanto, porque, em muitos aspectos, é um programa realmente bem projetado, poderoso e flexível. Também é bastante barato (US $ 3). O desempenho de baixo nível simplesmente não parece estar lá, no entanto, para executar um script antes de dormir.
Por outro lado, nos meus testes (até agora) o sleepwatcher parece bastante confiável e rápido. Também é gratuito, o que é incrível. Continuarei testando e, se achar que não funciona às vezes, atualizarei minha resposta e continuarei testando outras opções.
ATUALIZAÇÃO Eu não encontrou sleepwatcher a ser consistentemente confiável, uma vez escrevendo originalmente esta resposta, embora inicialmente parecia estar funcionando. No meu caso, não preciso executar scripts arbitrários, mas apenas ejetar unidades externas. Encontrei um aplicativo pequeno e barato que faz isso muito bem até agora: Jettison . Isso rapidamente se tornou um dos poucos utilitários sem os quais não posso viver. Se suas necessidades são as mesmas que as minhas, acho que você achará que vale a pena os poucos dólares que eles cobram.
fonte
O WakeWatcher é um aplicativo simples de plano de fundo sem rosto do OS X que eu criei para resolver esse problema. É executado
~/.onwake
sempre que a ativação é detectada. Em seguida, você pode colocar os comandos para montar / remontar suas unidades nesse script.WakeWatcher é adequado para uso como um item de login. Não é muito sofisticado, mas é gratuito e simples.
Executar scripts em suspensão seria uma adição simples, mas estou preocupado com o tempo disponível para a conclusão dos scripts antes que o sistema realmente entre em suspensão. Se você realmente precisar, abra um problema no projeto github e eu o adicionarei.
fonte