ubuntuusers.de

Skript Auto Off (automatisches herunterfahren)

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

djaevla

Anmeldungsdatum:
18. Mai 2010

Beiträge: Zähle...

Hallo community,

ich habe einen ubuntu-server 10.04 aufgesetzt und möchte diesen per Skript (Skripte/Auto OFF) ausschalten. Dieses soll nach zweimaliger Inaktivität, also wenn kein Ereignis zutrifft, den Rechner per "/sbin/halt" herunterfahren. Das Skript funktioniert soweit (Cron-Job läuft, Abfrage nach Samba-Users/eingeloggten Users/ping der LAN-Rechner etc.), was sich auch an der "/var/log/syslog" nachvollziehen lässt. Allerdings fährt der server nie herunter, sondern hängt beim zweiten Suchlauf. Die Datei "/var/spool/shutdown_counter" wird nach dem ersten Suchlauf ordnungsgemäß erstellt, welche dem Skript ja angibt, dass es beim zweiten Suchlauf - wenn die Datei "shutdown_counter" vorhanden ist - den Rechner per "/sbin/halt" herunterfährt. In der Syslog steht immer (auch nach dem x-ten Mal) nur

CRON[5591]: (root) CMD (/usr/local/sbin/checkshutdown.sh)
logger: AutoShutdown: marked for shutdown in next try
...
CRON[5621]: (root) CMD (/usr/local/sbin/checkshutdown.sh)
logger: AutoShutdown: marked for shutdown in next try
...

Alles wurde exakt nach dem Artikel (Skripte/Auto OFF) erstellt.

Kann mir jemand helfen, was da schief läuft?

Vielen Dank im Voraus!

michelsberg

Avatar von michelsberg

Anmeldungsdatum:
24. Februar 2007

Beiträge: 28

Wohnort: Würzburg

Ich frage mich ob das Auto-OFF-Skript so eigentlich richtig ist.

Da kommen Ausdrücke der Form

1
if [ test -e $OFFFILE ]

vor, was mir sehr doppelt gemoppelt und eigentlich falsch aussieht.

Das Programm test wird ja eigentlich vollständig durch das Programm (!) "[" ersetzt (→ /usr/bin/[ ), so dass das test überflüssig ist.

Wenn ich z.B. eine Datei "foo" anlege

1
touch foo

und dann nach obigem Schema vorgehe...

1
2
3
4
5
if [ test -e foo ]; then
    echo "foo ist da."
else
    echo "foo gibt's nicht."
fi

... folgt als Antwort der Bash:

bash: [: -e: Zweistelliger (binärer) Operator erwartet.
foo gibt's nicht.

Übertragen auf das Auto-OFF-Skript heißt das, dass /sbin/halt niemals ausgefürt wird.

Wenn ich es so mache...

1
2
3
4
5
if [ -e foo ]; then
    echo "foo ist da."
else
    echo "foo gibt's nicht."
fi

... kommt ordnungsgemäß

foo ist da.

djaevla

(Themenstarter)

Anmeldungsdatum:
18. Mai 2010

Beiträge: 8

hallo michelsberg,

vielen dank für deine Hilfe - genau das war der Fehler! Habe lediglich "test" entfernt und jetzt funktioniert es einwandfrei.

Danke...

michelsberg

Avatar von michelsberg

Anmeldungsdatum:
24. Februar 2007

Beiträge: 28

Wohnort: Würzburg

Super, gern geschehen.

Ah, Du hast ja im Diskussionsthread auch schon Laut gegeben. Dann viel Spaß mit dem Skript!

Antworten |