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.
Antworten:
Init.d Alle Skripte in
/etc/pm/sleep.d
werden 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.*sshd
nach offenen Verbindungen suchen und für samba können Sie die Ausgabe von analysierensmbstatus
Bearbeiten: Wenn Sie verwenden
systemd : erstelle
/etc/systemd/system/dontsleep.service
so etwasJetzt mit
RequiredBy= & Before=sleep.target
Ihrem neuendontsleep.service
hat ein dependencie für die gewordensleep.target
und systemd nicht erfolgreich in den Schlafmodus , bis dieser Dienst ausführt gehen kann (zBexit 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 )
quelle
/etc/pm/sleep.d
wird in systemd nicht verwendet? Ich verwende Arch Linux, daher funktioniert diese Lösung möglicherweise sowieso nicht für mich.netstat
aberiproute2
installiert, also habe ich verwendetExecStart=/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