Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutzung

Status
Not open for further replies.

PrincePaul

Patron
Joined
Feb 26, 2012
Messages
225
Schick mir deine Email per pn dann schicke ich dir das nachher ;)
 

Glon

Cadet
Joined
Oct 17, 2012
Messages
5
Scripts aus /etc nach reboot weg

Hey,

nach der Hilfe PricePaul läuft das Script :)

Nur war meine Überlegung es in einen Ordner in etc\scripts zu kopieren, damit nicht jedes mal die Festplatte geweckt wird, wenn es ausgeführt wird (Ist diese Überlegung überhaupt richtig??)
Hatte vorher schon von der Problematik gelesen, dass nach einem Reboot solche Änderungen verloren gehen, dies ist auch bei mir der Fall. Nach Reboot ist das Script weg.

Habe folgendes gefunden:

mount -uw /
=>Änderungen
mount -ur /

Nur weiß ich nicht was das bewirkt, kann mir jemand da genaueres sagen bzw. bin ich auf dem richtigen Weg?

Viele Dank!

Glon
 

PrincePaul

Patron
Joined
Feb 26, 2012
Messages
225
versuch doch mal chmod 444 auf die Datei zu legen

also einfach
Code:
chmod 444 /Pfad der Datei


dann ist die Schreibgeschützt evtl. funktioniert das ja
 

PrincePaul

Patron
Joined
Feb 26, 2012
Messages
225

freytag

Dabbler
Joined
Jan 10, 2013
Messages
49
Hallo,
auf der Suche nach einem sinnvollen shutdown bin ich bislang auch immer über diese beiden Varianten gestolpert.
Autostart des Freenas habe ich auch so gelöst, dass auf jedem Rechner eine *.bat nachschaut ob der Server anzupingen ist und falls nein ein magicpaket sendet. Beim shutdown und dem Scan des IP-Bereiches ist mir aufgefallen, ich muss zwei größere Bereiche abfragen, dass die Abfrage ewig dauert da das Systemseitige warten auf eine Antwort wohl bei rund 10 sec. liegt. Wenn denn ein Rechner aber online ist kommt die Antwort immer im Millisekundenbereich; warum also länger warten ? Ich habe für den Bereichsscan ein Timeout zum verlassen des ping von 1 sec. eingestellt. Der ganze Vorgang dauerte vorher fast 10 min, jetzt rund eine min.
Nun frage ich mich, ob ich dabei etwas übersehen habe und ein Timeout aus welchen Gründen auch immer nicht sinnvoll ist ?
Gruß, Ingo
 

freytag

Dabbler
Joined
Jan 10, 2013
Messages
49
...einen kleinen Nachtrag hätte ich noch...
Trotz Timeout von 1 sec dauerte der Scan von einem Bereich mit 20 Clients ca. 40 Sekunden.
Der hier oft benutzte Code lautet ja:

ping -c 1 -W 1 -i 1 $ip$i #ping IP-Adresse aus Var "ip" und "i"
if [ `ping -c 1 -W 1 -i 1 $ip$i | grep -wc 100.0%` -eq 0 ]

Das erste ping ist wofür ? Die Auswertung findet ja erst in der
If-Abfrage statt und da wird erneut ein ping gesendet.
Jedenfalls habe ich die erste Zeile gecancelt und jetzt dauert der
Scan von 20 Rechnern 21 Sekunden.
Evtl. interessierts' ja jemanden...Gruß, Ingo
 

therab

Dabbler
Joined
Jun 5, 2012
Messages
23
Hallo freytag

Danke für die Info. Werde ich mal ausprobieren.

Das erste ping scheint für die Ausgabe des ping Ergebnisses auf der Konsole zu sein.

Wenn man die Zeile auskommentiert sieht man auf der Konsole nur ob runtergefahren wird oder nicht.

Da das Script aber sowieso über cron gestartet wird kann man denke ich darauf verzichten.

Nachcher muss ich noch unbedingt 1 sec Timeout ausprobieren....

....und funktioniert viel schneller.

Danke nochmal für den Tip.
 

freytag

Dabbler
Joined
Jan 10, 2013
Messages
49
Das erste ping scheint für die Ausgabe des ping Ergebnisses auf der Konsole zu sein.

Stimmt, und deswegen habe ich in meiner .sh auch die Exit-Schleife mit der Echo-Ausgabe gelöscht.
Wenn ich am Rechner sitze interessiert es mich eher nicht dass er gerade nix abgeschaltet hat;
und wenn ich meinen Rechner 'runtergefahren habe kann ich auch nicht lesen dass sich der Server
jetzt abschaltet ;-)
Der Form halber, wenn auch ohne Einfluss:
Im Original : if [ `ping -c 1 -i 1 $ip$i
Das i 1 ist auch überflüssig. Wenn ich die Seiten richtig gelesen habe setzt i das Intervall zwischen
den Paketen. Jedoch gibt c 1 die Anzahl der Pakete vor. Und bei einem Paket braucht es keine Wartezeit c.

Wenn ich jetzt noch herausfinde wie ich den Cronjob einstelle, dass er erst ab 20h mit der
Überprüfung alle 30 min anfängt bin ich wohl langsam mit der Baustelle zufrieden.
 

yberion

Cadet
Joined
Feb 23, 2013
Messages
1
Hallo,

nachdem mir dieser Thread sehr viel weiter geholfen hat, bin ich nun an ein Hindernis gekommen, welches ich nicht alleine zu überwinden vermag.
Ich habe das Skript runtergeladen (Vielen Dank für die Linux-gerechte Bereitstellung!) und per Windows-Freigabe auf eine der internen Platten gepackt (Die ist wohl nur als Windoof-Platte importiert, NTFS, kein ZFS. EDIT: Auch bei einer ZFS Platte klappt es nicht). Per Konsole habe ich dem Skript CHMOD 755 zugewiesen. Manuell via Putty ausgeführt klappt es wunderbar:
Putty.jpg

Im Webinterface habe ich nun den Cron-Job eingerichtet wie folgt:
Unbenannt.jpg

Hier tut sich allerdings nichts, auch wenn das System meldet"
Mar 3 20:24:53 Server notifier: Stopping cron.
Mar 3 20:24:53 Server notifier: Starting cron.
"

PrincePaul hatte ja dasselbe Problem, allerdings klappt bei mir auch die Lösung mit den 30 Minuten nicht. Hat jemand noch eine Idee, wieso es nicht klappt? :smile:

Weiß nicht, ob das interessant ist, aber es handelt sich um ein ZOTAC NM10-DTX mit 4GB DDR2 Ram und 6 Platten.
 

therab

Dabbler
Joined
Jun 5, 2012
Messages
23
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

Wenn ich jetzt noch herausfinde wie ich den Cronjob einstelle, dass er erst ab 20h mit der
Überprüfung alle 30 min anfängt bin ich wohl langsam mit der Baustelle zufrieden.

@freytag
Hast Du das noch hinbekommen? Wenn ja wie muss man den Cron job einstellen?

Danke für einen kurze Info.

cu
 

therab

Dabbler
Joined
Jun 5, 2012
Messages
23
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

danke läuft.....
 

Morpheus0800

Cadet
Joined
Apr 13, 2013
Messages
8
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

Hab das Problem, dass mein NAS (Eigenbau) 8.3.1 mit INTEL 9301CT nicht aufwacht - nicht mit Windows PC und auch nicht mit XBMC!?
 

sandreas

Dabbler
Joined
Apr 20, 2012
Messages
23
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

Hallo zusammen,

ich habe einen kleinen Daemon entwickelt, der etwas anders beim automatischen Herunterfahren arbeitet. Der Daemon ist in python geschrieben und geht wie folgt vor:
- Alle 30 Sekunden (soll später einstellbar sein) prüft der Daemon die Aktivität des Systems
- Wird Aktivität festgestellt, wird ein Zeitstempel aktualisiert, andernfalls wird er so belassen, wie er ist
- Ist anhand des Zeitstempels 20 Minuten lang (soll später auch einstellbar sein) keine Aktivität verzeichnet worden, wird das System heruntergefahren
- Überwacht wird erstmal nur /mnt/, das soll später aber auch einstellbar sein.

Aktivität definiert sich dabei wie folgt:
- SSH oder Konsolenaktivität (prüfe ich mit dem Konsolenprogramm w)
- Schreibende Dateisystemaktivität (prüfe ich mit df | grep /mnt/)
- Lesende Dateisystemaktivität / Verbundene Shares (prüfe ich mit fstat | grep /mnt/)

Ich habe dazu mal einen englischen Thread erstellt, vielleicht kann ja einer von euch sich das mal anschauen. Ich würde den Daemon wirklich sehr gerne für die community zur Verfügung stellen.

Das einzige, was noch fehlt, ist die Möglichkeit, den Daemon automatisch zu starten. Das kriege ich irgendwie nicht hin. Darüber hinaus würde ich sehr gerne noch das WebInterface um Konfigurationseinstellungen erweitern, aber das ist erstmal nicht so wichtig.
 

sworn

Cadet
Joined
May 22, 2013
Messages
4
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

Hi sandreas,

ich habe mir deinen Sourcecode gerade durchgelesen und bin ein wenig stutzig geworden. Bitte hilf mir folgendes zu verstehen:

Um herauszufinden, ob eine Datei gerade (lesend) verwendet wird, benutzt du fstat. Du suchst dir aus der Liste der resultierenden Dateien / Verzeichnisse, die im Verzeichnis /mnt/ liegen.

Ich habe einen Test gemacht und eine Datei auf meinem Share über das Protokoll CIFS geöffnet.

Solange ich die Datei offen habe wird mir bei dem Kommando fstat | grep /mnt/ folgendes ausgegeben:

Code:
User1     smbd        7217  ...
User1     smbd        7217  ...
User1     smbd        7217  ...
User1     smbd        7217  ...
User1     smbd        7217  ...


Nun schließe ich die Datei, folgendes wird mir mit dem Befehl ausgegeben:

Code:
root     smbd        7217 ...


Die PID ist hier die Selbe, nur der Benutzer ändert sich. Ich weiß nicht wann dieser Eintrag wieder verschwindet. Nach 5 Minuten ist der Eintrag bei mir noch immer in der Liste.

Ich habe dieses Verhalten reproduzieren können. Den einzigen Unterschied, welchen ich feststellen konnte war, dass manchmal mehrere Einträge in der Liste erhalten bleiben. Diese Einträge haben die gleiche PID und laufen wieder unter dem root User.

Kannst du mir da einen Wink geben, wie das sein kann oder wie du das gelöst hast?

Best,
Sworn
 

sandreas

Dabbler
Joined
Apr 20, 2012
Messages
23
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

Erstmal schön, dass ich ein Feedback bekomme, vielen Dank dafür. Ja, das ermitteln der offenen Dateien. Ich habe lange überlegt, wie man das sinnvoll lösen kann. Leider bin ich mir gar nicht sicher, dass fstat überhaupt der richtige Weg ist. Allerdings schien es der einzige allgemeine Weg zu sein. Ansonsten müsste man für jeden Dienst einzeln die Aktivität ermitteln, z.B. mit smbstatus -b. Ich bin leider kein FreeBSD / FreeNAS Experte und habe ich mich auf meine eigenen Tests verlassen. Gelöst habe ich da nichts. Bei mir funktioniert das Script so, wie es ist und die offenen Dateien von root gibt es nicht. Aber es ist auch so, dass fstat auch eine geöffnete Datei anzeigt, wenn nur ein Share verbunden ist oder man eine Datei anschaut. Ist es denkbar, dass du noch irgendwie anders eine Datei geöffnet hast?

Andernfalls wäre ein "fix" in deinem Fall sehr einfach. Ersetze einfach:

'openFilesAndConnectedShares' : ShellCommand('/usr/bin/fstat | grep /mnt/'),

durch

'openFilesAndConnectedShares' : ShellCommand('/usr/bin/fstat | grep /mnt/ | grep -v root'),

Natürlich wären dadurch aber sämtliche von "root" geöffneten Dateien nicht mehr dabei. Ist aber meistens so, dass Shares nicht als root verbunden werden und wenn man als "root" mal eine Datei offen hat, greift der SSH/Console Activity von vorher oder der df-Check, wenn man Dateien verändert.
 

sworn

Cadet
Joined
May 22, 2013
Messages
4
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

Hi sandreas,

vielen Dank, dass du dein Skript in diesem Forum zu Verfügung stellst.

Ich bin durch die aktuelle c't auf eine andere Möglichkeit gestoßen, fest zu stellen, wann zuletzt eine Datei geöffnet wurde.

Dir wird der find Befehl wahrscheinlich geläufig sein, mit Hilfe des Paramaters -amin -minutes findet man die Dateien, welche seit -minutes geöffnet wurden. [1][2] Ich war mir nicht sicher was die Definition von "access time" ist. Der Link [3] erklärt ziemlich gut, dass der Parameter -amin minutes ausreicht. Es geht hier um den Unterschied zwischen accesstime, changetime und modificationtime.

Mein Vorschlag wäre folgender:
Liste alle Dateien welche seit x Minuten im Ordner /mnt/x/y/z geöffnet/verändert wurden.

Mangels Testumgebung kann ich den genauen Befehl nur raten, ich bitte um Verständnis:
Code:
find /mnt/x/y/z -amin -60


-60: Bedeutet, dass nur Dateien angezeigt werden sollen, welche in weniger als 60 (d.h. 59 minuten oder weniger) Minuten geöffnet/geändert wurden.

Ich übernehme keine Garantie auf Richtig- und Vollständigkeit, da ich derzeit keine Testumgebung zur Hand habe.

Best,
Sworn

[1] Sehr detailliert http://www.gnu.org/software/findutils/manual/html_mono/find.html
[2] man page http://unixhelp.ed.ac.uk/CGI/man-cgi?find
[3] Unterschied zwischen access-, change- und modificationtime http://blog.rootsmith.ca/linux/unix-access-modify-and-change-times/
 

sworn

Cadet
Joined
May 22, 2013
Messages
4
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

Hi sandreas,

vielen Dank, dass du dein Skript in diesem Forum zu Verfügung stellst.

Ich bin durch die aktuelle c't auf eine andere Möglichkeit gestoßen, fest zu stellen, wann zuletzt eine Datei geöffnet wurde.

Dir wird der find Befehl wahrscheinlich geläufig sein, mit Hilfe des Paramaters -amin -minutes findet man die Dateien, welche seit -minutes geöffnet wurden. [1][2] Ich war mir nicht sicher was die Definition von "access time" ist. Der Link [3] erklärt ziemlich gut, dass der Parameter -amin -minutes ausreicht. Es geht hier um den Unterschied zwischen accesstime, changetime und modificationtime.

Mein Vorschlag wäre folgender:
Liste alle Dateien welche seit x Minuten im Ordner /mnt/x/y/z geöffnet/verändert wurden.

Mangels Testumgebung kann ich den genauen Befehl nur raten, ich bitte um Verständnis:
Code:
find /mnt/x/y/z -amin -60


-60: Bedeutet, dass nur Dateien angezeigt werden sollen, welche in weniger als 60 (d.h. 59 minuten oder weniger) Minuten geöffnet/geändert wurden.

Ich übernehme keine Garantie auf Richtig- und Vollständigkeit, da ich derzeit keine Testumgebung zur Hand habe.

Was hältst du von diesem Ansatz, sandreas?

Best,
Sworn

[1] http://www.gnu.org/software/findutils/manual/html_mono/find.html (Sehr detailliert)
[2] http://unixhelp.ed.ac.uk/CGI/man-cgi?find (find man page)
[3] http://blog.rootsmith.ca/linux/unix-access-modify-and-change-times/ (Unterschied zwischen access-, change- und modificationtime)
 

sandreas

Dabbler
Joined
Apr 20, 2012
Messages
23
Re: Wake on Lan mit Freenas 8.0.3 / Automatisches Herunterfahren nach X min ohne Nutz

Dir wird der find Befehl wahrscheinlich geläufig sein, mit Hilfe des Paramaters -amin -minutes findet man die Dateien, welche seit -minutes geöffnet wurden. [1][2]
Interessante Idee.

Was hältst du von diesem Ansatz, sandreas?
Der Ansatz mit find unterscheidet sich grundsätzlich von meiner Idee. Mit find wird nicht der aktuelle Stand des Dateisystems widergespiegelt, sondern der, der letzten Änderung. Daraus ergeben sich mehrere Probleme:

1.) find muss immer den gesamten Dateisystem-Baum scannen, um die geänderten Dateien zu finden. Das dauert je nach Menge der Dateien extrem lange, aber auf jeden Fall immer länger als fstat. Zum Vergleich kannst du, sobald du ein Testsystem hast, mal den fstat Befehl ausführen. Der dauert weniger als 1 Sekunde. find braucht auch bei einem kleinen NAS wesentlich länger.

2.) Der letzte Zugriff ist zu ungenau, um eine klare Aussage zu treffen, ob das NAS gerade verwendet wird. Es ist schwierig, festzulegen, wann denn nun das NAS heruntergefahren werden soll.

Ich verwende bei mir einen zentralen Timestamp für "letzte Aktivität festgestellt". Das ist meine einzige Referenz, um zu prüfen, ob das NAS herunter gefahren werden soll. Ist die letzte Aktivität 30 Minuten her, fährt er herunter. Alle 30 Sekunden wird auf Aktivität geprüft. Aktivität definiert sich als:
- Benutzer loggt sich ein (per SSH oder direkt auf dem System, hier wird nach 30 Minuten Inaktivität auch herunter gefahren)
- Freier / verbrauchter Speicherplatz ändert sich (wenn man beispielsweise per CRON etwas auf eine externe USB-Platte synchronisiert)
- Dateien sind geöffnet oder Shares sind verbunden

Damit werden eigentlich alle Szenarien abgedeckt, die Aktivität ausmachen. Alternativ zu fstat wäre ein dienstbasierter Ansatz für jeden Dienst einzeln möglich:
- smbstatus -b
- afp, ftp, nfs, etc...
 
Status
Not open for further replies.
Top