Mantendo o Mac OSX sem atividade enquanto a tarefa / aplicativo está em execução

8

Eu quero deixar o rsync funcionando via Wi-Fi por horas ativadas. Mas quando faço isso, o Mac rompe a conexão depois de algum tempo.

No painel Configurações de energia, ele está configurado para "Computador nunca dorme", "Colocar o disco rígido para dormir quando possível" e "Acordar para acesso à rede".

Além disso, seria bom se o Mac realmente fosse dormir depois que a tarefa estivesse concluída.

Eu percebo um muito semelhante pergunta foi feita antes e que há pmset e insomniaX , mas eu não quero que a máquina seja sem dormir . E eu não quero continuar instalando mais e mais extensões, nem ter que ajustar o pmset todas as vezes.

Eu quero que ele se comporte de maneira nativa conforme o esperado - fique acordado enquanto eu deixo executando uma tarefa e, em seguida, durmo "quando possível". Este tempo é devido ao rsync, mas da próxima vez pode ser outra coisa.

Estou esperando muito como de costume? Posso consertar isso? Está mesmo quebrado?

    
por cregox 22.02.2010 / 16:34

4 respostas

8

Caffeinate

Por exemplo:

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

Da 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.

Ele também pode ser usado para situações como "não deixe a tela dormir enquanto assisto a este filme":

caffeinate -d # in effect until you hit Ctrl+C

... ou "fique acordado pelos próximos 10.000 segundos":

caffeinate -t 10000

Veja man caffeinate para detalhes.

    
por 04.09.2014 / 14:27
4
O

Jiggler pode ser configurado para apenas "sacudir" o mouse quando ele estiver em execução. Isso impedirá a tela e o computador de dormir. Isso não funcionará em um laptop com a tampa fechada. Para isso você precisaria do InsomniaX ou outro aplicativo baseado em kext.

    
por 22.02.2010 / 16:40
1

Você pode considerar fazer um aplicativo Stay-Open Applescript que define / redefine o timer de desligamento com base na existência de um processo em execução. Criar um launchd plist também é uma solução viável, no entanto, eu ainda sou inseguro na sintaxe. O comando "pmset force sleep X" não requer acesso root, mas as configurações são redefinidas na reinicialização.

Como sua situação parece que eu não serei capaz de antecipar todas as suas necessidades, vou esboçar algo para você.

property LoopTime: 5 --measured in seconds
property normalSleepTimeout: 30 --measured in minutes
property processName: "rsync"  --the name of the process you're trying to find

on run
   do shell script "pmset force sleep 0"  --disables sleep
   idle()
end

on idle
   if not appIsRunning() then 
      do shell script ("pmset force sleep " & normalSleepTimeout as string) -- sets sleep to desired idle timeout
      quit
   end
   return 
end

on appIsRunning()
   --Here's where you need to do the test that an app is running.  True needs to mean "the app is running".  Store the value to "result" or change the below return statement.

   return result
end

Para coisas como processos rsync e background, você precisa ficar mais esperto e pesquisar outras funções como $ top.

set result to False
if 0 < (count of (do shell script ("top -l 1 | grep" & processName as string))) then
   set result to True
end

Observe que, no caso acima, a pesquisa por apenas "rsync" retornará um falso positivo se o rsyncd estiver em execução, porque "rsync" e "rsyncd" correspondem. Você pode ter que ficar mais complicado se isso não funcionar para você.

Se o aplicativo fosse um processo Windowed, usaria o seguinte para determinar o que está sendo executado:

tell application "System Events" to set RunningAppNames to name of processes

Ou para identificadores de pacote (mais preciso)

tell application "System Events" to set RunningBundles to bundle identifier of processes

Fale mais sobre seu cenário e tentarei escrever algo mais exato e com uma interface de usuário mais flexível.

    
por 23.02.2010 / 00:33
1

Outra alternativa é Cafeína . É um aplicativo - não uma extensão - que mantém a máquina "ativa" por um período de tempo especificado, após o qual a máquina pode fazer o que normalmente faria: ficar em branco, executar protetor de tela, dormir, etc. Coloque sua máquina para dormir, mas deixará. Parece funcionalmente equivalente a definir as configurações de economia de energia como "nunca" para o período solicitado e restaurá-las posteriormente.

    
por 22.02.2010 / 21:08