Openfiler (NAS) automatischer suspend to disk (S4)

Hallo,
Erst mal ein paar Informationen:
Kernel Version 2.6.19.7-0.3.smp.gcc3.4.x86.i686 (SMP)
Distro Name Openfiler NAS/SAN www.openfiler.com
CPU VIA Nehemiah
Mainboard Via TC 10000 http://www.epiacenter.de/modules.php?name=Content&pa=showpage&pid=67
openfiler basiert, soweit ich weiß, auf: http://www.rpath.com/corp/

jetzt zu meinem Problem:

Ich bin noch sehr neu im Linuxbereich und habe mir mein kleines NAS mit Openfiler aufgebaut, das Problem ist: ich würde es gerne wieder schlafen schicken (S3 oder S4), wenn es nichts mehr zu tun hat. Im Forum von Openfiler und in deren IRC Chat konnte mir leider niemand weiterhelfen.
Über google habe ich aber von folgendem Befehl erfahren: "echo 4 > /proc/acpi/sleep", ob die datei sleep jetzt wirklich an diesem Platz ist, weiß ich noch nicht genau aber das lässt sich ja herausfinden. Da Openfiler einen 2.6.... Kernel verwendet sollte acpi eigentlich auch kein Problem sein.
Was ich nun gerne machen würde: diesen Befehl in die rc.local schreiben (so wird er beim systemstart geladen), nur würde er mir dann sofort "einschlafen", also bräuchte ich ein Attribut oder einen Zusatz, der ihm sagt: führe den Befehl erst aus, wenn der PC für eine Stunde ge "idlet" hat. gibt es so etwas überhaupt? Oder lässt sich das auf eine andere Art und Weise bewerkstelligen.

mfg
Versus
 
Mir wäre kein Befehl bekannt, wie man das Idlen eines PCs über längere Zeit mit einem Skript abfangen könnte. Es gibt ein paar Tools wie Cacti, die man entsprechend erweitern könnte, so daß anhand der generierten Statistik ermittelt wird, ob der Rechner idle ist, aber das dürfte etwas oversized sein, sich dort für eine solche Kleinigkeit einzuarbeiten, da Cacti recht komplex ist. Eine andere Möglichkeit wäre das Erstellen einer RRD für die Netzwerklast und ein passendes Skript dazu, das diese regelmäßig (einmal pro Minute via Cron) mit der aktuellen Netzwerklast füttert. Dazu ein kleines (Perl-)Skript, das per Cron alle 5 Minuten die RRDs auswertet und schaut, ob mehr als 2-3 kb/s Durchsatz in der letzten Stunde war. Wenn nein, ist das Netzwerk idle und damit wahrscheinlich auch der Rechner, denn der wird ja (soweit ich das verstanden habe) ausschliesslich Remote genutzt und dann wird das Hibernate durchgeführt. Wenn nein, passiert garnichts.
 
das ist eigentlich genau die Lösung nach der ich gesucht habe, sogar noch besser als das mit dem idlen. Nur gibt es da ein großes Problem: Ich bin zwar mittlerweile schon so weit, dass ich mich in der shell zurechtfinde, auch mit vi kann ich ein bischen arbeiten aber ich befürchte ein skript zu schreiben ist etwas zu viel für mich.
 
Und mir fehlt momentan die Zeit dazu. Wie du das RRDTool einrichtest, die RRD anlegst und mit Daten fütterst, kannst du meiner Howto-Geschichte entnehmen:

Erstellen der RRD (ggf. das Device anpassen):
Code:
mkdir /root/scripts
cd /root/scripts
rrdtool create networketh0.rrd --step 60 DS:eth0r:COUNTER:120:0:U \
DS:eth0t:COUNTER:120:0:U RRA:AVERAGE:0.5:1:2160 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:15:2880 \
RRA:AVERAGE:0.5:60:8760 RRA:MAX:0.5:1:2160 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:15:2880 RRA:MAX:0.5:60:8760

RRD mit Daten füttern (ggf. das Device anpassen):
Code:
cd /root/scripts
cat >> network.sh
#!/bin/bash
# erstmal alles, was mit eth0 zu tun hat
ETH0=$(grep eth0 /proc/net/dev)
# hier merken wir uns den Downstream
E0DOWN=$(echo $ETH0|tr \: \ |awk '{print $2}')
# und hier wird der Upstream zwischengespeichert
E0UP=$(echo $ETH0|tr \: \ |awk '{print $10}')
# rein damit in die RRD
rrdtool update /root/scripts/rrdtool/networketh0.rrd N:$E0DOWN:$E0UP

[STRG+D drücken]
chmod ug+rx /root/scripts/network.sh

Folgende Zeile in die /etc/crontab:
Code:
*/1 * * * * root /root/scripts/rrdtool/network.sh >> /var/log/monitoring.log

Cron-Daemon neu starten:
Code:
/etc/init.d/cron restart

Die Arbeit zum Parsen der RRD wirst du aber selbst machen müssen. Da hab ich gerade nichts passendes zur Hand. Perl bietet sich da halt an, weil es ein Modul für das RRD-Tool gibt, das die Sache etwas vereinfachen dürfte.
 
bin im moment so weit:

erstellen der RRD gemacht

RRD mit Daten füttern:
Code:
[root@dhcppc5 scripts]# cat network.sh
ETH0=$(grep eth0 /proc/net/dev)
E0DOWN=$(echo $ETH0|tr \: \ |awk '{print $2}')
E0UP=$(echo $ETH0|tr \: \ |awk '{print $10}')
rrdtool update /root/scripts/rrdtool/networketh0.rrd N:$E0DOWN:$E0UP
[root@dhcppc5 scripts]#

Zeile in crontab:
Code:
[root@dhcppc5 scripts]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
*/1 * * * * root /root/scripts/rrdtool/network.sh >> /var/log/monitoring.log42 4 1 * *
root run-parts /etc/cron.monthly
You have new mail in /var/spool/mail/root

und crondaemon neugestartet:
Code:
[root@dhcppc5 scripts]# /etc/init.d/crond restart
Stopping crond:                                             [  OK  ]
Starting crond:                                             [  OK  ]
You have new mail in /var/spool/mail/root

die neue mail sagt mir immer folgendes:
Code:
From root@localhost.localdomain  Fri Jun 15 20:56:01 2007
Return-Path: <root@localhost.localdomain>
Received: from localhost.localdomain (dhcppc5 [127.0.0.1])
        by localhost.localdomain (8.13.7/8.13.7) with ESMTP id l5FIu1wm002835
        for <root@localhost.localdomain>; Fri, 15 Jun 2007 20:56:01 +0200
Received: (from root@localhost)
        by localhost.localdomain (8.13.7/8.13.7/Submit) id l5FIu1X9002834;
        Fri, 15 Jun 2007 20:56:01 +0200
Date: Fri, 15 Jun 2007 20:56:01 +0200
Message-Id: <200706151856.l5FIu1X9002834@localhost.localdomain>
From: root@localhost.localdomain (Cron Daemon)
To: root@localhost.localdomain
Subject: Cron <root@dhcppc5> /root/scripts/rrdtool/network.sh >> /var/log/monitoring.log42 4 1 *
*
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

/bin/bash: /root/scripts/rrdtool/network.sh: No such file or directory
was habe ich falsch gemacht?
edit: kann es sein, dass in der crontab der flasche pfad angegeben ist?
edit2: anscheinend nicht, die mail kommt immer noch
 
So wie ich das sehe liegt deine network.sh in /root/scripts und nicht in /root/scripts/rrdtool, wo wie es der Eintrag in der crontab glaubt. Berichtigt mich wenn ich falsch liege...
 
Ups, sorry. Der Cron-Eintrag muss natürlich so aussehen:

Code:
*/1 * * * * root /root/scripts/network.sh >> /var/log/monitoring.log
 
Ich hab den Pfad schon geändert aber:

Es hat nicht aufgehört:
Code:
From root@localhost.localdomain  Sat Jun 16 18:02:01 2007
Return-Path: <root@localhost.localdomain>
Received: from localhost.localdomain (dhcppc5 [127.0.0.1])
        by localhost.localdomain (8.13.7/8.13.7) with ESMTP id l5GG21Vq004551
        for <root@localhost.localdomain>; Sat, 16 Jun 2007 18:02:01 +0200
Received: (from root@localhost)
        by localhost.localdomain (8.13.7/8.13.7/Submit) id l5GG2113004550;
        Sat, 16 Jun 2007 18:02:01 +0200
Date: Sat, 16 Jun 2007 18:02:01 +0200
Message-Id: <200706161602.l5GG2113004550@localhost.localdomain>
From: root@localhost.localdomain (Cron Daemon)
To: root@localhost.localdomain
Subject: Cron <root@dhcppc5> /root/scripts/network.sh >> /var/log/monitoring.log42 4 1 * *
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

ERROR: opening '/root/scripts/rrdtool/networketh0.rrd': No such file or directory
 
network.sh wie folgt anpassen:

Code:
#!/bin/bash
# erstmal alles, was mit eth0 zu tun hat
ETH0=$(grep eth0 /proc/net/dev)
# hier merken wir uns den Downstream
E0DOWN=$(echo $ETH0|tr \: \ |awk '{print $2}')
# und hier wird der Upstream zwischengespeichert
E0UP=$(echo $ETH0|tr \: \ |awk '{print $10}')
# rein damit in die RRD
rrdtool update /root/scripts/networketh0.rrd N:$E0DOWN:$E0UP

Und in Zukunft nicht einfach alles per Copy&Paste übernehmen, sondern auch mal nachschauen, was das Skript tut. :rolleyes: Anhand der Fehlermeldung hätte dir da nämlich ein Licht aufgehen müssen:

Code:
ERROR: opening '/root/scripts/rrdtool/networketh0.rrd': No such file or directory

Gibt ja nur eine Stelle im Skript, wo die networketh0.rrd angesprochen wird.
 
Code:
/bin/bash: /root/scripts/rrdtool/network.sh: No such file or directory

das war die Fehlermeldung, wegen der ich dauernd die crontab durchsucht hab, die zweite Fehlermeldung, da ist mir der Unterschied einfach nicht mehr aufgefallen, jetzt hat es aber zum glück aufgehört ;) thx
 
Hi,
da ich versus1 kenne haben wir über icq etwas darüber gelabert. Allerdings bekommt weder er noch ich einen Inhalt in die monitoring.log

Ich poste zur Zusammenfassung nochmal einige Files:

/root/scripts/network.sh
Code:
#!/bin/bash
# erstmal alles, was mit eth0 zu tun hat
ETH0=$(grep eth0 /proc/net/dev)
# hier merken wir uns den Downstream
E0DOWN=$(echo $ETH0|tr \: \ |awk '{print $2}')
# und hier wird der Upstream zwischengespeichert
E0UP=$(echo $ETH0|tr \: \ |awk '{print $10}')
# rein damit in die RRD
rrdtool update /root/scripts/networketh0.rrd N:$E0DOWN:$E0UP

/etc/crontab
Code:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

*/1 * * * * root /root/scripts/network.sh >> /var/log/monitoring.log

Der rrdtool create Befehl ist ja ein RIESIGER Befehl so wie ich das sehe ... ich habe einfach per cut&paste das ganz übernommen.

dann
Code:
mathias@laptop:/root/scripts$ sudo /etc/init.d/cron restart
 * Restarting periodic command scheduler crond                           [ OK ] 
mathias@laptop:/root/scripts$
etwas netzwerk-last erzeugt und mal in die /var/log/monitoring.log geschaut. Aber leer.

Ideen Bitmuncher?

mfg
serow
 
Ey Leuts, lest bitte mal die Doku zum rrdtool. Die monitoring.log ist nur dazu da Fehlermeldungen aufzunehmen, wenn rrdtool einen Fehler verursacht. Die eigentlichen Daten werden in der RRD abgelegt und müssen auch dort rausgeholt und ausgewertet werden. Deswegen schrieb ich:

Die Arbeit zum Parsen der RRD wirst du aber selbst machen müssen. Da hab ich gerade nichts passendes zur Hand. Perl bietet sich da halt an, weil es ein Modul für das RRD-Tool gibt, das die Sache etwas vereinfachen dürfte.
 
Hi,
Ich hab jetzt mit
Code:
[root@dhcppc5 scripts]# rrdtool dump /root/scripts/networketh0.rrd >./text.xml
eine xml erstellt und versuche gerade die zu verstehen

Code:
/v></row>
                        <!-- 2007-06-16 14:00:00 CEST / 1181995200 --> <row><v> NaN </v><v> NaN <
/v></row>
                        <!-- 2007-06-16 15:00:00 CEST / 1181998800 --> <row><v> NaN </v><v> NaN <
/v></row>
                        <!-- 2007-06-16 16:00:00 CEST / 1182002400 --> <row><v> NaN </v><v> NaN <
/v></row>
                        <!-- 2007-06-16 17:00:00 CEST / 1182006000 --> <row><v> NaN </v><v> NaN <
/v></row>
                        <!-- 2007-06-16 18:00:00 CEST / 1182009600 --> <row><v> NaN </v><v> NaN <
/v></row>
                        <!-- 2007-06-16 19:00:00 CEST / 1182013200 --> <row><v> 3.4534347433e+04
</v><v> 1.6126448430e+05 </v></row>
Die Uhrzeiten werden ja immer als 19:00:00 angegeben, was ja Stunden wären, ist das so richtig? Und was gibt dabei die Netzwerkauslastung an? Die hintere Zahl steigt ja immer um 3600, also könnte das auch die Zeitangabe sein, nur so ganz verstehen tu ich das noch nicht, kann mir da jemand helfen?
 
Du hast halt noch viele nicht belegte Punkte in der RRD, für die du als Wert NaN (Not a Number) erhälst. Die belegten Punkte geben dir Werte mit folgenden Aufbau aus:

Code:
<!-- 2007-06-15 07:27:00 CEST / 1181885220 --> <row><v> 1.5202803480e+02 </v><v> 7.1369361919e+01 </v></row>
<!-- 2007-06-15 07:28:00 CEST / 1181885280 --> <row><v> 2.3640769681e+03 </v><v> 2.2216917439e+02 </v></row>
<!-- 2007-06-15 07:29:00 CEST / 1181885340 --> <row><v> 2.2394040427e+03 </v><v> 2.4320793288e+02 </v></row>
<!-- 2007-06-15 07:30:00 CEST / 1181885400 --> <row><v> 6.2821438091e+02 </v><v> 2.5110961355e+02 </v></row>
Hier ist der erste Wert der Download und der zweite der Upload.
 
Danke Bitmuncher. RRDTool ist ja echt sweeeeet!
Falls du doch noch irgendwo ein Perl-Script liegen hast melde dich bitte ...
 
Zurück
Oben