Wie halte ich den Computer eingeschaltet, wenn eine Verbindung besteht?

7

Ich verwende Linux Mint Debian v2, 64-Bit.

Ich möchte, dass der Computer kurz nach Beendigung der Verwendung in den Ruhezustand wechselt. Daher habe ich das Zeitlimit für Inaktivität auf 10 Minuten festgelegt.

Aber wenn ich mit meinem Laptop über SSH mit meinem Computer verbunden bin, geht es in den Ruhezustand, selbst wenn ich Dinge wie das Kopieren von Dateien oder das Ansehen eines Videos über Samba mache.

Wie kann ich dies stoppen, ohne die Schlafzeiteinstellung zu ändern? Was genau bedeutet "keine Aktivität" für den Computer, um einzuschlafen? Vielleicht ist das Gegenteil leichter zu erklären, was eine Aktivität darstellt , um den Computer wach zu halten?

Mein Laptop ist auch LMDE v2.

Linstar
quelle
1
Können Sie hinzufügen, wie Sie das Inaktivitätszeitlimit konfiguriert haben?
Bram
Über die Menüs: Einstellungen -> Energieverwaltung -> Auf der Registerkarte Wechselstrom -> Schalten Sie den Computer in den Ruhezustand, wenn er für inaktiv ist.
Linstar

Antworten:

4

Init.d Alle Skripte in /etc/pm/sleep.dwerden ausgeführt, bevor in den Ruhemodus gewechselt wird. Wenn eines von ihnen einen Schlafmodus ungleich Null zurückgibt, wird kein Schlafmodus eingegeben.

Sie können dort also ein Skript platzieren, das nach allen Prozessen sucht, die nicht als "PC wird noch verwendet" erkannt werden sollen, und einfach 1 zurückgeben, wenn einer dieser Prozesse noch ausgeführt wird - oder nach anderen Bedingungen, die Sie skripten können.

Für ssh können Sie netstat -tnpa | grep ESTABLISHED.*sshdnach offenen Verbindungen suchen und für samba können Sie die Ausgabe von analysierensmbstatus


Bearbeiten: Wenn Sie verwenden

systemd : erstelle /etc/systemd/system/dontsleep.serviceso etwas

[Unit]
Description=Inhibit suspend in case of [some] activity
Before=sleep.target

[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c "some command that that returns an failure exit status if you don't want the pc to go into sleep mode (e.g exit 1)"

[Install]
RequiredBy=sleep.target

Jetzt mit RequiredBy= & Before=sleep.targetIhrem neuen dontsleep.servicehat ein dependencie für die geworden sleep.targetund systemd nicht erfolgreich in den Schlafmodus , bis dieser Dienst ausführt gehen kann (zB exit 0)

Vergessen Sie nicht, es mit zu aktivieren systemctl enable dontsleep.service

(Von hier gestohlene Idee: https://bbs.archlinux.org/viewtopic.php?pid=1380080#p1380080 )

Fabian N.
quelle
Vielen Dank. Es könnte funktionieren, aber ich weiß einfach nicht genug, um das Skript dort zu ändern. Ich muss es ein bisschen mehr studieren und mich bei allen melden, wenn es funktioniert.
Linstar
Nicht ändern, nur kein neues erstellen ... Ich werde Ihnen ein Beispiel schreiben, wenn ich heute nach Hause komme ...
Fabian N.
@ FabianN. Das ist ein verdammt guter Weg! : p Könnten Sie bitte ein Beispiel schreiben? Vielen Dank.
Sparhawk
@ FabianN. Oh, ich denke das /etc/pm/sleep.dwird in systemd nicht verwendet? Ich verwende Arch Linux, daher funktioniert diese Lösung möglicherweise sowieso nicht für mich.
Sparhawk
2
@ FabianN. Oh genial! Hervorragender Diebstahl! :) Funktioniert perfekt. FWIW hatte ich nicht, netstataber iproute2installiert, also habe ich verwendet ExecStart=/usr/bin/sh -c "if [ $(ss state established '( dport = 22 or sport = 22 )' | wc -l) -gt 1 ]; then exit 1; else exit 0; fi", was perfekt funktioniert
Sparhawk