Einen wunderschönen guten Tag^^
Mein Ziel ist es, meinen owncloud server (alter Desktop PC) aus Energiespargründen automatisch in den suspend state zu versetzen wenn dieser nicht genutzt wird; gestartet wird er über eine Portweiterleitung mit Wake-on-Lan vom Router aus.
Meine bisherige Überlegung ist es, mithilfe von netstat zu überprüfen, ob tcp Verbindungen bestehen, sollte dies für 2 Minuten nicht der Fall sein soll der Server in den Suspend gehen.
Bisheriges Script:
#!/bin/bash
while true; do
sleep 10
if [[ ! -e /tmp/delayed_suspend_running ]]; then
if [[ -z $(netstat | grep tcp) ]]; then
delayed_suspend &
touch /tmp/delayed_suspend_running
fi
fi
if [[ -e /tmp/delayed_suspend_running ]]; then
if [[ -n $(netstat | grep tcp) ]]; then
pkill delayed_suspend
rm /tmp/delayed_suspend_running
fi
fi
done
das darin aufgerufene delayed_suspend:
#!/bin/bash
sleep 60
systemctl suspend
Das ganze wird über einen Systemd Service gestartet:
[Unit]
Description=Auto Suspend
[Service]
ExecStart=/usr/bin/auto-suspend
Restart=always
[Install]
WantedBy=multi-user.target
Dieser Code funktioniert auch teilweise, in dem Sinn das der Server in circa der Hälfte der Fälle in den Suspend geht, die anderen Male bleibt er einfach an. Ich kann mir bisher nicht erklären woran dies liegt; es existieren zu dem Zeitpunkt keine tcp Verbindungen, noch sagt Systemd dass der Service nicht mehr läuft. Über Lösungsansätze würde ich mich freuen.
Wenn ihr andere Ideen habt, wie man das ganze umsetzen könnte würde ich mich auch darüber freuen^^
Vielen Dank im Vorraus