OS X: cómo evitar que la computadora duerma durante una sesión ssh

29

Cuando accedo a una computadora con OS X en mi red, la sesión dura hasta que OS X entra en modo de suspensión .

¿Hay alguna manera de evitar que esto suceda durante mi sesión SSH , aparte de golpear físicamente el mouse o escribir teclas, o desactivar manualmente la función de suspensión?

EDITAR: La sesión ssh normalmente sería un simple montaje sshfs.

Stefan
fuente
¿No le gustaría también evitar que se duerma antes de su sesión de SSH?
SamB

Respuestas:

9

Esta no es una solución lista para usar, pero posiblemente funcionará si a nadie se le ocurre una solución :-)

Puede manipular la configuración de administración de energía con el comando pmset. Consulte la página de manual para obtener más información al respecto.

La configuración interesante que queremos manipular es dormir :

suspensión: temporizador de suspensión del sistema (valor en minutos o 0 para deshabilitar)

Entonces podemos usar los siguientes comandos:

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

Ahora tenemos que activar estos comandos después de iniciar sesión y cerrar sesión. Si recuerdo bien, Bash es el shell predeterminado para Mac OS X que nos lleva a estos dos archivos:

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

Edítelos o créelos en su directorio de inicio y agregue los comandos apropiados. Si lo desea, guarde el valor de suspensión actual en un archivo temporal y restáurelo después.

El último problema a resolver es la solicitud de contraseña de sudo. Para dar a su usuario el permiso para invocar pmset sin ninguna contraseña, edite sus / etc / sudoers con sudoedit. Necesitas usar la NOPASSWDetiqueta. Si esto es nuevo para usted, eche un vistazo al manual de sudoers .

echox
fuente
1
¿funcionaría este método si la conexión ssh fuera solo un montaje sshfs?
Stefan
1
No estoy seguro, pero no creo que sshfs abra un shell de inicio de sesión, por lo que esto no funcionará con sshfs.
echox
9

Esto me permitió usar mi Mac a través de SSH sin importar qué, siempre que la Mac esté conectada a una fuente de alimentación.

Preferencias del sistema, Ahorro de energía, Evitar que la computadora duerma automáticamente cuando la pantalla está apagada

Todo se apaga cuando el Mac se apaga de su fuente de alimentación, por lo que no tiene que preocuparse por la duración de la batería.

Benoit Duffez
fuente
1
Esta opción es inútil en macOS Sierra. Mi iMac duerme independientemente de esta configuración, se activa con el acceso SSH y luego duerme inmediatamente después del cierre de sesión SSH. Es muy molesto.
Bruno Philipe
Esta respuesta finalmente resolvió mi problema después de jugar con ~ / .ssh / config durante horas en un iMac Mojave
n1000
6

La utilidad pmset integrada de OS X tiene una configuración que puede hacer lo que desee. Consulte la página de pmsetmanual para conocer la ttyskeepawakeconfiguración y la explicación que lo acompaña.

El siguiente comando probablemente hará lo que quieras:

sudo pmset -c ttyskeepawake 1

El -cindicador activa esta configuración específicamente cuando la computadora funciona con alimentación de CA (a diferencia de la batería o la alimentación del UPS), y ttyskeepawake 1evita que la computadora duerma durante una sesión activa de tty (presumiblemente una remota). Se va a permitir que el sueño si la sesión ha estado inactiva durante más tiempo que el temporizador de apagado, pero si eso es un problema, puede que el ordenador no debería establecerse a dormir en absoluto.

robo
fuente
6

Para usar SSH para abrir un shell en una máquina OSX remota y evitar que duerma durante la sesión SSH:

$ ssh -t me@mymacbook caffeinate -i bash
starfry
fuente
5

Desde Mac OS X 10.8, debería poder usar el caffeinate(8)comando.

Tratar caffeinate -s ssh server.example.com.

200_success
fuente
9
El OP está tratando de evitar que la Mac remota (es decir, el servidor ssh) se suspenda. A menos que me equivoque, su ejemplo solo evitará que duerma en la terminal del cliente.
Owen
3

Agregué el siguiente script en .bash_profile

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

Si el proceso es un hijo directo de un demonio ssh, ejecute un mismo shell a través del comando cafeína (8) para evitar que el sistema duerma durante la sesión ssh.

Kubo Takehiro
fuente
2

Una búsqueda en la web para evitar el sueño de Mac ofrece una gran cantidad de buena información sobre utilidades y trucos que puede utilizar.

Sin embargo, en su situación, sospecho que lo que realmente quiere hacer es tener una sesión ssh separada que ejecute un programa de línea de comandos muy simple que evite que la Mac duerma. Apple proporciona el código fuente completo en Preguntas y respuestas técnicas 1160: Prevención del sueño . (Desafortunadamente, esta página está rota en el sitio de Apple en este momento, pero puede extraer una copia del caché de Google).

No he probado para ver si este programa se puede ejecutar con éxito desde una sesión ssh, pero parece que podría.

Tenga en cuenta que las implementaciones de sshfs generalmente no permanecen conectadas al sistema remoto todo el tiempo, y solo ejecutan una sesión cuando quieren un archivo o directorio. Por lo tanto, necesita una sesión ssh separada, que se ejecute en una ventana de terminal minimizada, para ejecutar el programa de insomnio.

La ventaja de este enfoque es que no necesita usar sudo ni meterse con la configuración de administración de energía del sistema.

Neil Mayhew
fuente