DSM 6.x und darunter Automatisches ausschalten

Alle DSM Version von DSM 6.x und älter
Status
Für weitere Antworten geschlossen.

Payn

Benutzer
Mitglied seit
29. Jan 2009
Beiträge
360
Punkte für Reaktionen
0
Punkte
16
Hi,

es gibt ja die Funktion automatisches ausschalten in den Einstellungen.
Wenn ich aber jetzt z.B. mit Twonky gerade etwas streame oder irgendwas kopiere und dann die Zeit zum ausschalten kommt, dann geht die DS einfach aus und alles bricht ab.

Kann man es nicht irgendwie so machen, dass die DS erst wenn kein Traffic mehr ist aus geht, oder wenn kein Teilnehmer mehr verbunden ist oder so??
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Es kommt ein bisschen drauf an wie Synology das Herunterfahren geregelt hat. Nachdem das System den Befehl zum shutdown erhalten hat wird es mal ein kill Signal an die Prozesse schicken. Je nach verwendetem Signal Typ gibt das System den Diensten noch die Chance auf das Signal zu reagieren und ggf Daten zu speichern (TERM Signal). Oder das System sendet einen harten kill, worauf der Dienst nicht mehr reagieren kann und damit sofort abgeschossen wird. Das kennt man ja beim Herunterfahren von Windows auch: Erst gibt das System dem Prozess die Chance noch zu reagieren und erst nach einer gewissen Zeit kommt das Fenster wo du den Prozess gnadenlos abschiessen kannst.
Dein Wunsch nach Warten bis kein Traffic mehr wird sich kaum umsetzen lassen. Denn in einem LAN hast du eigentlich immer Traffic. Gerade wenn neben der DS noch Clients laufen. Jedes Datenpaket würde ja dann das Herunterfahren verhindern und die DS müsste u.U. sehr lange warten bis sie runterfahren könnte.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Kann man es nicht irgendwie so machen, dass die DS erst wenn kein Traffic mehr ist aus geht, oder wenn kein Teilnehmer mehr verbunden ist oder so??

Es ist leider nicht immer ganz einfach, herauszubekommen, ob noch ein Teilnehmer verbunden ist, oder nicht. Auch ist es nicht immer einfach für einen Server festzustellen, dass gleich eine Pause ist ...

Die Frage ist, wie man das Problem intelligent lösen kann. Im Moment werden eigentlich alle Dienste gefragt, hast du was dagegen ausgemacht zu werden ... sie können also noch ihre Puffer leeren und sich dann verabschieden ... das kann natürlich mitten in einer Übertragung sein ... aber das ist halt das Schicksal eines Servers, dass eine Übertragung auch hinüber sein kann, er kann sich nie sicher sein, dass es noch weiter geht und er wartet halt blöd ... ohne eine Aussage darüber machen zu können, ob es nun vorbei ist oder nicht.

Im Grunde ist es ein Gedanken-Fehler, einen Server (und die DS hat ja eigentlich nur diese Aufgabe, eine Plattform für Server-Programme zu sein) überhaupt auszuschalten. Ein Server ist eigentlich so gestrickt, dass er immer läuft ...

Ich verstehe aber durchaus den Wunsch, eine DS abzuschalten und dabei nicht irgendwas zu unterbrechen. Ich will damit sagen, dass es mir sehr schwer fallen würde, die Bedingungen zu formulieren, unter denen das gut geht. Aber vielleicht können wir ja mal solche Ideen sammeln, wann eine DS gefahrlos ausgeschaltet werden kann ...

Warum so eine Sammlung? Wir können natürlich selbst das Herunterfahren initiieren und zeitlich steuern. Das Kommando zum Stoppen des Systems auf der Kommandozeile ist 'poweroff' . Der zeitlichen Teil kann über einen Cronjob laufen, z.B. täglich um 23 Uhr. Die Frage ist jetzt, was müsste man alles abprüfen, damit dann um 23 Uhr auch das Kommande 'poweroff' durchschlagend abgesetzt werden darf. Bedingungen müsste man nun formulieren ...

Itari
 

Payn

Benutzer
Mitglied seit
29. Jan 2009
Beiträge
360
Punkte für Reaktionen
0
Punkte
16
hm...das hört sich ja alles nicht so einfach an.

Also ich könnte mir vorstellen, das über den Traffic zu überwachen. Mir ist klar, das in einem Lan immer ein wenig Traffic herscht, aber weitaus weniger als wenn man z.B. irgendwas stream, downloaded..ect. z.B. könnte man schreiben:

Fällt der traffic unter z.B. 20 KB/s für 2 Minuten nach 23 Uhr, dann dass System ausschalten.


Oder:

Ist die twonkymediaserver Prozessorauslastung für 1 min nach 23 Uhr unter 1 %, dann das System ausschalten.


Oder wenn es irgendwie möglich ist:

Ist kein Client nach 23 Uhr für 1 min mehr verbunden, dann das System ausschalten.


irgendwie sowas in der Richte muss doch möglich sein

mfg Simon
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hm...das hört sich ja alles nicht so einfach an.

Also ich könnte mir vorstellen, das über den Traffic zu überwachen. Mir ist klar, das in einem Lan immer ein wenig Traffic herscht, aber weitaus weniger als wenn man z.B. irgendwas stream, downloaded..ect. z.B. könnte man schreiben:

Fällt der traffic unter z.B. 20 KB/s für 2 Minuten nach 23 Uhr, dann dass System ausschalten.

Das könnte gehen


Oder:

Ist die twonkymediaserver Prozessorauslastung für 1 min nach 23 Uhr unter 1 %, dann das System ausschalten.

Das geht bestimmt


Oder wenn es irgendwie möglich ist:

Ist kein Client nach 23 Uhr für 1 min mehr verbunden, dann das System ausschalten.

das ist schwierig, weil sich die Clients ja nicht bei jedem Protokoll anmelden (FTP wäre sowas). Bei Samba und bei NFS würde es gehen ... da kannst abfragen wer noch im Netz noch eine Share gemountet hat. Allerdings selbst wenn du auf dem PC nichts mehr mit der Share machen würdest, würde die DS dann nicht herunterfahren.

irgendwie sowas in der Richte muss doch möglich sein

mfg Simon

Ja super erstmal. An solche Bedingungen hatte ich gedacht. Mehr davon und noch feiner (im Sinne von mikroskopisch) gedacht. Ich werde mir mal dazu was am WoEnde überlegen.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Die Frage ist jetzt, was müsste man alles abprüfen, damit dann um 23 Uhr auch das Kommande 'poweroff' durchschlagend abgesetzt werden darf. Bedingungen müsste man nun formulieren ...
Das ist ne gute Idee. Man könnte z.B. auch den Status des Prozesses auslesen. Wenn er schläft dann weiter mit shutdown.
Aber wie du halte ich es für sehr schwierig griffige Bedingungen zu finden. Könnte je nachdem dazu führen, dass das script dann endlos läuft. Was passiert z.B. wenn während dem das script mit dem shutdown wartet ein weiterer längerer cronjob anläuft (z.B. ein Backup)? Eventuell fährt dann das Teil gar nicht mehr runter...
Irgendwann muss der shutdown erzwungen werden und spätestens dann wird der Prozess eh abgeschossen
Gerade noch was bei ipkg gefunden. Das folgende Paket kann Daten von iptables aufzeichnen (setzt allerding z.Z. noch die Beta Firmware von Synology voraus)
Code:
[URL="http://martybugs.net/linux/ipac.cgi"]ipac-ng[/URL] - 1.31-3 - iptables/ipchains based IP accounting package for Linux.
Das Teil wertet die Daten von iptables aus. Man könnte also das Teil nach sagen wir 23 Uhr regelmässig aufrufen (cron) und daraus die Datenmenge/s berechnen. Wenn die während 2min tiefer als 20 KB/s liegt, dann shutdown
Mittels
Code:
[URL="http://pwet.fr/man/linux/administration_systeme/ipacsum"]ipacsum[/URL] -x
bekommt man die genauen Daten in Bytes und nicht formatiert in MB oder GB (bei GB würde es schwierig werden KBytes zu "sehen" ;) )
Das Teil hat auch eine Schnittstelle die Daten grafisch als Bildchen auszugeben
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Grundsätzlich halte ich es nicht für ein Problem, die DS anzulassen, wenn noch genügend Arbeit vorliegt ... das ist sicherlich für die meisten auch eine vernünftige Option. Man könnte das ja auch protokollieren, so dass man am nächsten Morgen feststellen kann, wer die Nachteule war und in der Disk-o mit dem Platten rumgemacht hat :D

Itari
 

Payn

Benutzer
Mitglied seit
29. Jan 2009
Beiträge
360
Punkte für Reaktionen
0
Punkte
16
also es gibt ja schon in de DS die funktion, das die Festplatten bei inaktivität, nach z.B. 1 Stunde, abgeschaltet werden. Das wär doch auch ein Anhaltspunkt für eine Bedingung.

z.B.

Automatisches ausschalten ist auf 23 Uhr. Danach muss die Festplatte sich in den Ruhezustand begeben. Und dann erst abschalten.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
also es gibt ja schon in de DS die funktion, das die Festplatten bei inaktivität, nach z.B. 1 Stunde, abgeschaltet werden. Das wär doch auch ein Anhaltspunkt für eine Bedingung.

z.B.

Automatisches ausschalten ist auf 23 Uhr. Danach muss die Festplatte sich in den Ruhezustand begeben. Und dann erst abschalten.

Ja nur leider kann man diese Funktion (spin-down) nicht abfragen, ohne die Platte wieder aufzuwecken ... ist eine Eigenschaft des Disks-Controllers. Es kommt einem so vor, als würde dem Disk-Controller gesagt werden: 'Hey schalte dich ab, wenn du nach 15 Minuten nichts Neues mehr in deinem Buffer findest, und denk dran, der letzte macht das Licht (die LED) aus und lass mich bloß in Ruhe mit dem Kram ...' :D

Also das mit dem Spin-down krieg ich leider nicht hin (zumindest hab ich mir mal die Zähne dran ausgebissen) ... aber vielleicht kennt sich da jemand besser aus ....

Itari
 

coolhot

Benutzer
Mitglied seit
01. Mrz 2009
Beiträge
926
Punkte für Reaktionen
0
Punkte
0
Ich finde die Diskussion und schon geäußerten Ideen spannend und möchte auch gern dazu beitragen. Besonders interessieren würde mich das automatische Ausschalten bei Ende des Backups. Dann könnte ich die DS zeitgesteuert aufwachen lassen. Passend zur geplanten Backupzeit. 2 Minuten nach Backupstartzeit dann den cronjob für poweroff starten.

Der könnte wohl auch über die Prozessauslastung arbeiten also z.B.

Code:
If Backupprozess < 2% für mind. 5 Minuten then poweroff
(Das ist natürlich kein Programmcode, ich kann leider nicht programieren).

Welche Parameter stehen denn aus der DS-Umgebung zur Abfrage/Vergleich bereit?

- Systemzeit
- Systemdatum/Wochentag
- Systemlaufzeit
- Plattentemperatur
- Systemtemperatur (nicht alle Modelle?)
- Prozessorauslastung
- Samba/NFS-Connections


Gibt es so etwas wie CPU-Verbrauchszeit eines Prozess? Also z.B. smbd 01:20. Dann könnte man schauen ob sich die Zeit noch erhöht oder stagniert.

das http(s)-Protokoll ist meines Wissens stateless, d.h. eine Datenübertragung findet nur paketweise pro Request statt. Zwischendurch kann der Server den Status des Clients nicht feststellen.

Ein ereignisgesteuertes poweroff wäre auch für die Downloadstation hilfreich. Fahre herunter wenn alle Downloads fertig.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Du kannst in einem PHP-Skript mindestens auf alle (nicht-interaktiven) Linux-Tools und Shell-Commands zurückgreifen (exec ()). Allerdings gibt es kaum Ereignisse (zumindest habe ich die Event-Steuerung bislang noch nicht verstanden, wenn es denn eine gibt) zum Abfragen. Deswegen kann man auch nicht feststellen, ob die Download-Station noch in Arbeit ist und noch etwas tun muss. Das muss irgendwie anders hinbekommen ... vielleicht so, dass man alle 2 Minuten abfragt, ob das tmp-Verzeichnis noch einen Inhalt hat oder sowas.

Leider kann man auch nicht sonderlich tief-schürfend auf den Verbrauch von Serverprozessen schauen, weil die auch wenn sie nichts ordentliches zu tun haben, halt ein wenig 'aktiv' sind.

Schaut euch an, was man mit 'top' alles sehen kann, sehr viel mehr wird es dann auch nicht sein. Die Prozessen an sich lassen sich gut im /proc-Verzeichnis studieren. Das kann man auch einbeziehen.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@coolhot
Du könntest z.B. den Status des smbd auslesen. Dabei steht R für running und S für sleeping
Code:
ps | grep mbd
 2155 root       1852 S   /opt/sbin/nmbd -D --configfile=/opt/etc/samba/smb.con
 2156 root       1440 S   /opt/sbin/nmbd -D --configfile=/opt/etc/samba/smb.con
 2171 root       2676 S   /opt/sbin/smbd -D --configfile=/opt/etc/samba/smb.con
 2197 root       1116 S   /opt/sbin/smbd -D --configfile=/opt/etc/samba/smb.con
 6666 root        220 S   grep mbd
Welche Parameter stehen denn aus der DS-Umgebung zur Abfrage/Vergleich bereit?

- Systemzeit
- Systemdatum/Wochentag
- Systemlaufzeit
- Plattentemperatur
- Systemtemperatur (nicht alle Modelle?)
- Prozessorauslastung
- Samba/NFS-Connections
- date
- ebenfalls date
- uptime (leider ist dieser Command auf der DS nicht dabei, aber der Befehl htop kann die Uptime auch irgendwie auslesen und htop gibt es als ipkg)
- das liesse sich mit smartctl umsetzen
- die Systemtemp kann sicher auch irgendwie ausgelesen werden, wobei ch ned genau weiss wie
- zumindest die Prozessorzeiten kannst du mit times bekommen
- itari hat mal eine 3rd Party Application geschrieben wo man die aktiven Samba-Verbindungen anschauen kann (such mal im Forum)

Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
itari hat mal eine 3rd Party Application geschrieben wo man die aktiven Samba-Verbindungen anschauen kann (such mal im Forum

ja, ich habe aber nichts weiter als net status share und net status sessions ausgewertet ... das würde doch sowieso jeder Windows-Admin so machen ... gut das Samba das Kommando net kennt ;)

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ja, ich habe aber nichts weiter als net status share und net status sessions ausgewertet ... das würde doch sowieso jeder Windows-Admin so machen ... gut das Samba das Kommando net kennt ;)

Itari
Das würde aber doch schon reichen. Bei net kriegst du doch jeweils die PID ebenfalls geliefert. Ich nehme mal an das ist die PID die man mit ps auch kriegen kann. Ob noch eine Samba Übertragung läuft könnte man doch so testen, indem man die PIDs von net abfragt und schaut ob die Prozesse noch Status R haben...
Meinst du das würde nicht gehen?

Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Meinst du das würde nicht gehen?

Keine Ahnung ;)

Der Prozess-Status sagt nur etwas darüber aus, wie das Process-Scheduling gerade verlaufen ist, nicht ob ein Prozess noch aktiv ist oder nicht. Schau dir noch mal genau in 'top' an, wie da der Status ist und wie trotzdem Prozesse aktiv sind. Es wäre also nicht sonderlich sinnvoll, diesen Status zu verwenden. Sinnvoller (aber auch nicht 100%tig zufriedenstellend) wäre die durchschnittliche Prozessaktivität (%CPU) , wie sie 'top' zur Verfügung stellt, auszuwerten.

Itari
 

coolhot

Benutzer
Mitglied seit
01. Mrz 2009
Beiträge
926
Punkte für Reaktionen
0
Punkte
0
- uptime (leider ist dieser Command auf der DS nicht dabei, aber der Befehl htop kann die Uptime auch irgendwie auslesen und htop gibt es als ipkg)
tobi

Also bei mir klappt das:

Code:
DS> uptime
 20:51:23 up 31 min, load average: 0.00, 0.00, 0.00
Das liegt an den coreutils (ipkg). Die bringen viele nette Spielereien für die Kommandozeile mit. Mit stat ist die letzte Zugriffs-/Änderungszeit einer Datei ermittelbar.
 

Phil88

Benutzer
Mitglied seit
01. Okt 2007
Beiträge
84
Punkte für Reaktionen
0
Punkte
0
Hi,

Vielleicht könnte es man ja auch so regeln das man über das GUI IPs (IP = User) aus dem LAN eingeben kann, die die DS durch einen Ping abcheckt, wenn keine Antwort kommt dann kann die DS herunterfahren.

Phil
 

coolhot

Benutzer
Mitglied seit
01. Mrz 2009
Beiträge
926
Punkte für Reaktionen
0
Punkte
0
Die Idee gefällt mir.

Es bräuchte also ein Script ungefähr so

ping xxx.xxx.xxx.xxx
if antwort = 100% packet loss then
shutdown

Kriegt das jemand hin?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Rich (BBCode):
while TRUE ; do
RET1=$(ping -c 1 10.0.0.1 | tail -1 | awk '{print $7}')
RET2=$(ping -c 1 10.0.0.2 | tail -1 | awk '{print $7}')
if [ "$RET1" = "100%" -a "$RET1" = "100%" ] ; then shutdown ; fi
done

Möglicherweise sieht es so aus ...

Itari
 

coolhot

Benutzer
Mitglied seit
01. Mrz 2009
Beiträge
926
Punkte für Reaktionen
0
Punkte
0
Wow, das war zügig. Ich hatte vergessen zu erwähnen das es wohl Sinn macht das Skript per crond z.B. alle 10 Minuten einzuplanen dann muss es nicht dauernd laufen. Als Signal für Shutdown würde ich 100% packet loss bei 4 Versuchen pro Host nehmen.

Kannst du deinen Vorschlag etwas erklären? Können Host1 und Host2 in Kombination (UND-Verknüpfung) abgefragt werden?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat