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.
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 .
Isso me permitiu usar meu mac sobre SSH de qualquer maneira, desde que o mac esteja conectado a uma fonte de alimentação.
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.
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.
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
Desde o Mac OS X 10.8, você deve ser capaz de usar o comando caffeinate(8)
.
Experimentar caffeinate -s ssh server.example.com
.
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.
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.