OS X: come impedire la sospensione del computer durante una sessione ssh


29

Quando accendo un computer con OS X sulla mia rete, la sessione dura fino a quando l' OS X entra in modalità di sospensione .

Esiste un modo per impedire che ciò accada durante la mia sessione SSH , oltre a urtare fisicamente il mouse o digitare i tasti o disabilitare manualmente la funzione sleep?

EDIT: la sessione ssh sarebbe normalmente un semplice mount sshfs.


Non vorresti anche impedire che dorma prima della tua sessione SSH?
SamB

Risposte:


9

Questa non è una soluzione pronta all'uso ma probabilmente funzionerà se nessun altro trova una soluzione :-)

È possibile manipolare le impostazioni di risparmio energia con il comando pmset. Vedi la manpage per maggiori informazioni a riguardo.

L'impostazione interessante che vogliamo manipolare è il sonno :

sleep - timer di spegnimento del sistema (valore in minuti o 0 per disabilitare)

Quindi possiamo usare i seguenti comandi:

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

Ora dobbiamo attivare questi comandi dopo un login e una disconnessione. Se ricordo bene, Bash è la shell predefinita per Mac OS X che ci porta a questi due file:

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

Modificali o creali nella tua home directory e aggiungi i comandi appropriati. Se lo desideri, salva il valore di sospensione corrente in un file temporaneo e ripristinalo da esso in seguito.

L'ultimo problema da risolvere è la richiesta della password di sudo. Per dare al tuo utente il permesso di invocare pmset senza alcuna password, modifica il tuo / etc / sudoers con sudoedit. Devi usare il NOPASSWDtag. Se questo è nuovo per te, dai un'occhiata al manuale di sudoers .


1
questo metodo funzionerebbe se la connessione ssh fosse solo un mount sshfs?
Stefan,

1
Non sono sicuro, ma non credo che sshfs aprirà una shell di login, quindi questo non funzionerà con sshfs.
echox,

9

Questo mi ha permesso di usare il mio mac su SSH, a prescindere da cosa, purché il mac sia collegato a una fonte di alimentazione.

Preferenze di Sistema, Risparmio energia, Impedisci la sospensione automatica del computer quando lo schermo è spento

Tutto si spegne quando il mac si spegne, quindi non devi preoccuparti della durata della batteria.


1
Questa opzione è inutile su macOS Sierra. Il mio iMac dorme indipendentemente da questa impostazione, si riattiva all'accesso SSH e quindi si ferma immediatamente dopo il logout SSH. È veramente noioso.
Bruno Philipe,

Questa risposta ha finalmente risolto il mio problema dopo aver armeggiato con ~ / .ssh / config per ore su un Mojave iMac
n1000

6

L'utilità pmset integrata di OS X ha un'impostazione che può fare ciò che desideri. Controllare la pmsetmanpage per l' ttyskeepawakeimpostazione e la spiegazione di accompagnamento.

Il seguente comando probabilmente farà quello che vuoi:

sudo pmset -c ttyskeepawake 1

La -cbandiera rende questa impostazione attiva specificamente quando il computer è alimentato a corrente alternata (al contrario della batteria o dell'alimentazione dell'UPS) e ttyskeepawake 1impedisce al computer di dormire durante una sessione tty attiva (presumibilmente remota). Esso sarà consentire il sonno se la sessione è stato inattivo per più del timer di spegnimento, ma se questo è un problema, forse il computer non deve essere impostato per il sonno a tutti.


6

Per utilizzare SSH per aprire una shell su una macchina OSX remota e impedirne la sospensione per la durata della sessione SSH:

$ ssh -t me@mymacbook caffeinate -i bash

5

Da Mac OS X 10.8, dovresti essere in grado di utilizzare il caffeinate(8)comando.

Prova caffeinate -s ssh server.example.com.


9
L'OP sta cercando di impedire la sospensione del Mac remoto (cioè il server SSH). A meno che non mi sbagli, il tuo esempio impedirà solo il sonno sul terminale del client.
Owen,

3

Ho aggiunto il seguente script in .bash_profile

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

Se il processo è figlio diretto di un demone ssh, esegui una stessa shell tramite il comando caffeinate (8) per impedire al sistema di dormire durante la sessione ssh.


2

Una ricerca web per Mac impedisce al sonno di trovare molte buone informazioni su utility e trucchi che puoi usare.

Tuttavia, nella tua situazione, sospetto che quello che vuoi davvero fare sia avere una sessione ssh separata che esegua un programma da riga di comando molto semplice che impedisce al Mac di dormire. Apple fornisce il codice sorgente completo in Domande e risposte tecniche 1160: prevenzione della sospensione . (Sfortunatamente, questa pagina non è attualmente disponibile sul sito di Apple, ma puoi estrarne una copia dalla cache di Google.)

Non ho testato per vedere se questo programma può essere eseguito correttamente da una sessione SSH, ma sembra che potrebbe.

Si noti che le implementazioni di sshfs in genere non rimangono sempre registrate nel sistema remoto ed eseguono una sessione quando vogliono un file o una directory. Quindi è necessaria una sessione SSH separata, in esecuzione in una finestra del terminale ridotta a icona, per eseguire il programma di insonnia.

Il vantaggio di questo approccio è che non è necessario utilizzare sudo o pasticciare con le impostazioni di gestione dell'alimentazione del sistema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.