web-development-kb-pt.site

OS X: como evitar que o computador hiberne durante uma sessão SSH

Quando eu ssh em um computador OS X na minha rede, a sessão dura até o OS X entra no modo hibernar.

Existe alguma maneira de evitar que isso aconteça durante minha sessão [~ # ~] ssh [~ # ~] , além de bater fisicamente com o mouse ou digitar ou desativando manualmente a função dormir?

EDITAR: A sessão ssh normalmente seria uma montagem sshfs simples.

29
Stefan

Esta não é uma solução out-of-the-box, mas possivelmente funcionará se ninguém aparecer com uma solução :-)

Você pode manipular as configurações de gerenciamento de energia com o comando pmset. Veja a manpage para mais informações sobre ele.

A configuração interessante que queremos manipular é sleep :

sleep - temporizador de suspensão do sistema (valor em minutos ou 0 para desativar)

Portanto, podemos usar os seguintes comandos:

Sudo pmset sleep 25      # go to sleep after 25 minutes
Sudo pmset sleep 0       # disable sleep

Agora temos que acionar esses comandos após um login e logut. Se bem me lembro, Bash é o Shell padrão para Mac OS X, que nos leva a estes dois arquivos:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bash_logout
          The individual login Shell cleanup file, executed when a login Shell exits

Edite ou crie-os em seu diretório pessoal e adicione os comandos apropriados. Se desejar, salve o valor de suspensão atual em um arquivo temporário e restaure-o posteriormente.

O último problema a ser resolvido é o prompt de senha do Sudo. Para dar ao seu usuário permissão para invocar o pmset sem nenhuma senha, edite seu/etc/sudoers com sudoedit. Você precisa usar a tag NOPASSWD. Se isso é novo para você, dê uma olhada no manual do sudoers .

9
echox

Isso me permitiu usar meu mac sobre SSH de qualquer maneira, desde que o mac esteja conectado a uma fonte de alimentação.

System Preferences, Energy saver, Prevent computer from sleeping automatically when the display is off

Tudo é desligado quando o mac desliga a fonte de alimentação, então você não precisa se preocupar com a vida útil da bateria.

9
Benoit Duffez

O utilitário pmset embutido do OS X tem uma configuração que pode fazer o que você quiser. Verifique a página de manual pmset para a configuração ttyskeepawake e a explicação que a acompanha.

O seguinte comando provavelmente fará o que você quiser:

Sudo pmset -c ttyskeepawake 1

O -c flag torna esta configuração ativa especificamente quando o computador está funcionando com alimentação CA (em oposição à bateria ou UPS), e ttyskeepawake 1 evita que o computador hiberne durante uma sessão tty ativa (provavelmente remota). Ele irá permitir a suspensão se a sessão estiver inativa por mais tempo do que o temporizador de suspensão, mas se isso for um problema, talvez o computador não deva ser configurado para dormir.

6
robo

Para usar o SSH para abrir um Shell em uma máquina OSX remota e evitar que ele hiberne durante a sessão SSH:

$ ssh -t [email protected] caffeinate -i bash
6
starfry

Desde o Mac OS X 10.8, você deve ser capaz de usar o comando caffeinate(8) .

Experimentar caffeinate -s ssh server.example.com.

5
200_success

Eu adicionei o seguinte script em .bash_profile

if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
  caffeinate -s $Shell --login
  exit $?
fi

Se o processo for filho direto de um daemon ssh, execute o mesmo Shell através do comando caffeinate (8) para evitar que o sistema hiberne durante a sessão ssh.

3
Kubo Takehiro

Uma pesquisa na web por mac prevent sleep traz muitas informações úteis sobre utilitários e truques que você pode usar.

No entanto, na sua situação, eu suspeito que o que você realmente deseja fazer é ter uma sessão ssh separada que execute um programa de linha de comando muito simples que impede o Mac de hibernar. Apple fornece o código-fonte completo em Technical Q&A 1160: Preventing sleep . (Infelizmente, esta página está corrompida no site da Apple no momento, mas você pode obter uma cópia do cache do Google.)

Não testei para ver se este programa pode ser executado com êxito em uma sessão SSH, mas parece que pode.

Observe que as implementações de sshfs normalmente não ficam logadas no sistema remoto o tempo todo e apenas executam uma sessão quando desejam um arquivo ou diretório. Portanto, você precisa de uma sessão ssh separada, em execução em uma janela de terminal minimizada, para executar o programa de insônia.

A vantagem dessa abordagem é que você não precisa usar o Sudo ou mexer nas configurações de gerenciamento de energia do sistema.

2
Neil Mayhew