PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : linux script problem



dataholic
26-02-2009, 21:57
Hallo
Ich möchte meinen linix rechner per cron mit poweroff zu einer bestimmten zeit runterfahren. Das funktioniert soweit.
Der Rechner soll allerdings nur herunterfahren wenn niemand mehr angemeldet ist da manchmal bekannt von mir von extern auf dem rechner arbeiten.

Mein idee wäre nun folgende:

'!/bin/bash
who >weristonline

Wenn die datei weristonline leer ist soll der befehl reboot ausgeführt werden.
Wenn nicht sollt das ganze nach ner viertel stunde nochmal von vorne beginnen

Meine erste idee wäre gewesen, mit if test -s die datei weristonline zu überprüfen. Wenn die Datei leer ist wird poweroff ausgeführt ansonsten
wait...
Ich weiß nur nicht wie ich das genau schreibn muss

Gibts ne einfachere möglichkeit?
Wie kann ich überprüfen ob die datei weristonline leer ist

thx im voraus

blaube
12-03-2009, 21:15
Hallo,
nutze den Befehl

who
-> listet angemeldeten user pro Zeile, falls du als root arbeitest, dann
einfach ein who | grep -v root, dann fällt deine Anmeldung raus

oder

who -q
-> listet alle angemeldeten User in einer Zeile und die Anzahl der User findest
du in der letzten Zeile mit
# user=3
Das bedeutet es sind 3 Benutzer angemeldet und dein user root wird mitgezählt.

who -q | tail -1 | cut -d= -f2

gibt nur die Zahl aus.

So mußt du keine eigene Datei anlegen und nutzt Linux Mittel.

Hoffe das hilft dir weiter.
Ciao

jan61
14-03-2009, 19:48
Moin,

das kannst Du ohne temporäre Datei (wie auch von blaube vorgeschlagen) machen, indem Du die who-Ausgabe direkt prüfst (ungetestet, ich habe gerade keinen Rechner ohne angemeldeten Benutzer an):

test -z "`who`" && shutdownAchte auf die Backticks (`), das darin eingebettete Kommando wird durch seine Standardausgabe ersetzt (im Shell-Manual unter "command substitution" zu finden).

Jan

EDIT: Noch was: Du brauchst, wenn Du cron benutzt, keinen wait (wäre dann ein sleep) im Script. Du startest das Script einfach alle 15 Minuten.