OS X: como evitar que o computador durma durante uma sessão ssh

28

Quando eu ssh em um computador OS X na minha rede, a sessão dura até que o OS X entre no sono .

Existe uma maneira de evitar que isso aconteça durante a minha sessão SSH , além de bater fisicamente o mouse ou digitar teclas, ou desativar manualmente a função dormir?

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

    
por Stefan 08.09.2010 / 18:35

7 respostas

9

Esta não é uma solução pronta para uso, 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 . Consulte a página de manual para obter mais informações.

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

sleep - system sleep timer (value in minutes, or 0 to disable)

Para que possamos 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 depois de um login e logout. Se eu me lembrar disso, o Bash é o shell padrão do Mac OS X, o que nos leva a esses 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 resolver é o prompt de senha do sudo. Para dar ao seu usuário a permissão para invocar pmset sem qualquer senha, edite seu / etc / sudoers com o sudoedit. Você precisa usar a tag NOPASSWD . Se isso é novo para você, dê uma olhada no manual do sudoers .

    
por 08.09.2010 / 19:05
6

Para usar o SSH para abrir um shell em uma máquina OSX remota e impedir que ele durma enquanto durar a sessão SSH:

$ ssh -t me@mymacbook caffeinate -i bash
    
por 30.04.2015 / 12:36
5

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

O comando a seguir provavelmente fará o que você deseja:

sudo pmset -c ttyskeepawake 1

A sinalização ttyskeepawake torna essa configuração ativa especificamente quando o computador está sendo executado com energia CA (em oposição à energia da bateria ou do no-break) e -c impede que o computador durma durante uma sessão ativa tty (presumivelmente remota ). Ele irá permitir a suspensão se a sessão estiver inativa por mais tempo que o temporizador, mas se isso for um problema, talvez o computador não deva ser configurado para dormir.

    
por 04.11.2012 / 12:14
5

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

Experimente caffeinate -s ssh server.example.com .

    
por 28.11.2013 / 09:15
5

Isso me permitiu usar o meu mac sobre SSH, não importa o que, desde que o mac esteja conectado a uma fonte de energia.

Tudo é desativado quando o mac sai da fonte de energia, para que você não precise se preocupar com a duração da bateria.

    
por 22.01.2015 / 13:40
2

Uma pesquisa na web para mac previne o sono 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 quer fazer é ter uma sessão ssh separada que execute um programa de linha de comando muito simples que impeça o Mac de dormir. A Apple fornece o código-fonte completo em Technical Q & A 1160: Prevenir o sono . (Infelizmente, esta página está quebrada no site da Apple no momento, mas você pode extrair uma cópia do cache do Google.)

Eu não testei para ver se este programa pode ser executado com sucesso a partir de uma sessão ssh, mas parece que poderia.

Observe que as implementações do sshfs geralmente não permanecem conectadas ao sistema remoto o tempo todo e apenas executam uma sessão quando desejam um arquivo ou diretório. Então você precisa de uma sessão ssh separada, rodando em uma janela de terminal minimizada, para rodar 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.

    
por 11.09.2010 / 01:51
2

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 é um filho direto de um daemon ssh, execute um mesmo shell através do Caffeinate (8) comando para evitar que o sistema durma durante a sessão ssh.

    
por 13.12.2015 / 01:48