Wir hatten im Frühjahr das Problem dass der Server sich auch runter fährt wenn sich jemand mit SSH verbunden hat. Und das Problem wurde gelöst. Und das ist gut so. Allerdings hatte die Lösung einen unschönen Seiteneffekt, nämlich dass autosuspend.sh gnadenlos ins Suspend lief, auch wenn jemand direkt vom Rechner saß. So schlecht war die ursprüngliche Umsetzung dann wohl doch nicht… Aber jetzt sollte auch dieses Thema der Vergangenheit angehören! Jetzt werden nämlich nicht mehr nur die SSH Verbindungen gezählt, sondern zusätzlich die Logins am Rechner selbst. Schaut so aus:
# Read logged users
USERCOUNT=`who | wc -l`;
USERCOUNTSSH=`ps -A x |grep sshd |grep -v grep | wc -l`;
# No Suspend if there are any users logged in
test $USERCOUNT -gt 0 && { logit "some users still connected, auto suspend terminated"; return 1; }
test $USERCOUNTSSH -gt 1 && { logit "some users still ssh connected, auto suspend terminated"; return 1; }
Im Endeffekt wurde die ursprünglichen Zeilen wiederverwendet. Es werden zuerst die Logins am Rechner mit who
gezählt, sind es mehr als 0, dann wird nicht runter gefahren. Und dann werden die Instanzen von SSH-Daemon gezählt, sind es mehr als einer, dann ist jemand verbunden. Haha.
[Update] Hmm, wenn man sich die Sache mal genauer betrachtet, dann sollte man die SSH-Überprüfung ja eigentlich gar nicht brauchen. Dass das damals nicht geklappt hat. Komisch.