Pare o Mac de dormir enquanto um script bash estiver em execução e deixe-o dormir normalmente quando concluir

13

Eu tenho meu Mac para acordar durante a noite e executar um rsync para fazer o backup. Isso é configurado em Economia de energia> Agenda.

No entanto, parece que ele volta a dormir antes que possa fazer qualquer coisa, por isso preciso interrompê-lo durante a execução do script bash do qual o rsync é executado.

Imaginei que a melhor maneira (se possível) seria emitir um comando para definir o tempo limite de suspensão para "Nunca" ou um tempo limite muito longo antes de sincronizar novamente e voltar ao normal quando terminar. Existe uma solução melhor para fazer isso?

Gaff
fonte
Deve estar no superusuário?
Kimvais 22/01/10

Respostas:

18

Cafeína

Por exemplo:

caffeinate -i rsync -avz someuser@somehost:somefolder /some/local/folder

Na página do manual:

EXAMPLE
     caffeinate -i make
        caffeinate forks a process, execs "make" in it, and holds an
        assertion that prevents idle sleep as long as that process
        is running.

Veja man caffeinatepara detalhes.

Nathan Long
fonte
11

Mac OS X 10.8 (Mountain Lion) e posterior

Use o caffeinatecomando Veja a resposta de Nathan Long ou man caffeinatepara detalhes.

Mac OS X 10.7 (Lion) e versões anteriores

Ele está enterrado na página de manual, mas o pmset tem um modo muito simples de impedir o sono. Se você executar o comando, pmset noidleseu Mac será mantido acordado até que esse processo seja encerrado. Aqui está como usá-lo em um script:

# launch process to prevent sleep and move it to the background
pmset noidle &
# save the process ID
PMSETPID=$!

... do stuff here ...
... don't fall asleep ...
... watch out for that tree!
... ok we're free and clear now ...

# kill pmset so the computer can sleep if it wants to
kill $PMSETPID

É melhor do que usar o pmset para alterar suas configurações de suspensão, o que requer acesso root e (supondo que você seja um bom cidadão) alguma maneira de detectar as configurações atuais e alterá-las novamente quando terminar.

benzado
fonte
2
pmset noidleestá obsoleta: a página homem diz: This argument is deprecated in favor of caffeinate(8). Veja minha resposta.
Nathan Long
4

Experimentar

man pmset

:-)


fonte