OS X: Verhindert, dass der Computer während einer SSH-Sitzung in den Ruhemodus wechselt

29

Wenn ich in einem OS X- Computer in meinem Netzwerk ssh bin, dauert die Sitzung, bis OS X in den Energiesparmodus wechselt .

Gibt es eine Möglichkeit, dies während meiner SSH- Sitzung zu verhindern , abgesehen vom physischen Anstoßen der Maus oder dem Eingeben von Tasten oder dem manuellen Deaktivieren der Sleep-Funktion?

BEARBEITEN: Die ssh-Sitzung wäre normalerweise ein einfaches sshfs-Mount.

Stefan
quelle
Möchten Sie nicht auch verhindern, dass es vor Ihrer SSH-Sitzung in den Ruhemodus wechselt ?
SamB

Antworten:

9

Dies ist keine Out-of-the-Box-Lösung, aber es funktioniert möglicherweise, wenn sich niemand eine Lösung einfallen lässt :-)

Sie können die Energieverwaltungseinstellungen mit dem Befehl bearbeiten pmset. Weitere Informationen finden Sie in der Manpage .

Die interessante Einstellung, die wir manipulieren möchten, ist Schlaf :

sleep - System-Sleep-Timer (Wert in Minuten oder 0 zum Deaktivieren)

Wir können also die folgenden Befehle verwenden:

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

Jetzt müssen wir diese Befehle nach einem Login und Logut auslösen. Wenn ich mich an dieses Recht erinnere, ist Bash die Standard-Shell für Mac OS X, die uns zu diesen beiden Dateien bringt:

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

Bearbeiten oder erstellen Sie sie in Ihrem Home-Verzeichnis und fügen Sie die entsprechenden Befehle hinzu. Wenn Sie möchten, speichern Sie den aktuellen Ruhezustandswert in einer temporären Datei und stellen Sie ihn anschließend wieder her.

Das letzte zu lösende Problem ist die Passwortabfrage von sudo. Um Ihrem Benutzer die Berechtigung zum Aufrufen von pmset ohne Kennwort zu erteilen, bearbeiten Sie Ihre Datei / etc / sudoers mit sudoedit. Sie müssen das NOPASSWDTag verwenden. Wenn dies für Sie neu ist, werfen Sie einen Blick in das sudoers-Handbuch .

Echox
quelle
1
Würde diese Methode funktionieren, wenn die SSH-Verbindung nur ein SSHFS-Mount wäre?
Stefan
1
Ich bin mir nicht sicher, aber ich glaube nicht, dass sshfs eine Login-Shell öffnen wird, daher funktioniert dies nicht mit sshfs.
Echox
9

Dies ermöglichte mir, meinen Mac über SSH zu verwenden, egal was passiert, solange der Mac an eine Stromquelle angeschlossen ist.

Systemeinstellungen, Energiesparmodus, Verhindert, dass der Computer automatisch in den Energiesparmodus wechselt, wenn das Display ausgeschaltet ist

Alles wird heruntergefahren, wenn der Mac von der Stromquelle getrennt wird, sodass Sie sich keine Gedanken über die Akkulaufzeit machen müssen.

Benoit Duffez
quelle
1
Diese Option ist unter macOS Sierra unbrauchbar. Mein iMac geht unabhängig von dieser Einstellung in den Ruhezustand, wird beim SSH-Zugriff aktiviert und geht dann unmittelbar nach dem SSH-Abmelden in den Ruhezustand. Es ist wirklich nervig.
Bruno Philipe
Diese Antwort löste endlich mein Problem, nachdem ich stundenlang mit ~ / .ssh / config auf einem Mojave iMac
n1000
6

Das in OS X integrierte Dienstprogramm pmset hat eine Einstellung, mit der Sie tun können, was Sie wollen. Überprüfen Sie die pmsetManpage für die ttyskeepawakeEinstellung und die dazugehörige Erklärung.

Der folgende Befehl wird wahrscheinlich tun, was Sie wollen:

sudo pmset -c ttyskeepawake 1

Das -cFlag aktiviert diese Einstellung speziell, wenn der Computer mit Wechselstrom (im Gegensatz zu Batterie- oder USV-Strom) betrieben wird und ttyskeepawake 1verhindert , dass der Computer während einer aktiven Sitzung (vermutlich einer Remote-Sitzung) in den Energiesparmodus wechselt. Es wird Schlaf ermöglichen , wenn die Sitzung länger als der Sleep - Timer nicht aktiv ist, aber wenn das ein Problem ist, vielleicht sollte der Computer überhaupt nicht in dem Schlaf eingestellt werden.

Roboter
quelle
6

So öffnen Sie mit SSH eine Shell auf einem Remote-OSX-Computer und verhindern, dass dieser für die Dauer der SSH-Sitzung in den Ruhezustand wechselt:

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

Seit Mac OS X 10.8 sollten Sie den caffeinate(8)Befehl verwenden können.

Versuchen Sie es caffeinate -s ssh server.example.com.

200_erfolg
quelle
9
Das OP versucht, den Remote- Mac (dh den SSH-Server) vom Ruhezustand abzuhalten . Wenn ich mich nicht irre, verhindert Ihr Beispiel nur den Schlaf auf dem Client-Terminal.
Owen
3

Ich habe das folgende Skript hinzugefügt .bash_profile

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

Wenn der Prozess ein direktes Kind eines ssh-Daemons ist, führen Sie dieselbe Shell über den Befehl caffeinate (8) aus , um zu verhindern, dass das System während der ssh-Sitzung in den Ruhezustand wechselt.

Kubo Takehiro
quelle
2

Eine Websuche nach " Mac Prevent Sleep" liefert viele nützliche Informationen zu Hilfsprogrammen und Tricks, die Sie verwenden können.

Ich vermute jedoch, dass Sie in Ihrer Situation wirklich eine separate ssh-Sitzung einrichten möchten, in der ein sehr einfaches Befehlszeilenprogramm ausgeführt wird, das verhindert, dass der Mac in den Energiesparmodus wechselt. Apple gibt den vollständigen Quellcode in den technischen Fragen und Antworten 1160 an: Verhindern von Schlaf . (Leider ist diese Seite auf der Apple-Website derzeit nicht erreichbar, Sie können jedoch eine Kopie aus dem Google-Cache abrufen.)

Ich habe nicht getestet, ob dieses Programm in einer SSH-Sitzung erfolgreich ausgeführt werden kann, aber es sieht so aus, als ob es dies könnte.

Beachten Sie, dass sshfs-Implementierungen in der Regel nicht die ganze Zeit beim Remote-System angemeldet bleiben und nur eine Sitzung ausführen, wenn sie eine Datei oder ein Verzeichnis benötigen. Sie benötigen also eine separate SSH-Sitzung, die in einem minimierten Terminalfenster ausgeführt wird, um das Schlaflosigkeitsprogramm auszuführen.

Der Vorteil dieses Ansatzes besteht darin, dass Sie weder sudo verwenden noch mit den Energieverwaltungseinstellungen des Systems herumspielen müssen.

Neil Mayhew
quelle