Jump to content

NFS Server Standby deaktivieren


Stooges

Empfohlene Beiträge

Hallo an alle,

 

ich hoffe das Thema ist in diesem Unterforum richtig aufgehoben. Ansonsten bitte ich um Entschuldigung und entsprechendes Verschieben. :D

 

Meine Sagem DBox2 Kabel hängt wie mein Desktop-Rechner an einem Lancom DSL/I-10+ Router. Der Rechner läuft unter Ubuntu 10.04. Per installiertem NFS Server exportiere ich mehrere Verzeichnisse, auf die ich per Direktaufnahme von der DBox streame.

 

Da mein Desktoprechner kein reiner Server ist, der Tag und Nacht laufen soll, fährt dieser nach einer Stunde in den Standby herunter, um Strom zu sparen. Da der Standby nur durch Maus- oder Tastatur-Events verhindert wird, habe ich folglich das Problem, dass der Rechner trotz laufender Aufnahme oder Wiedergabe eines Films in den Standby herunterfährt, wenn ich vergessen habe, vorher am Rechner den Standby zu deaktivieren. Das sieht dann so aus, dass ich z.B. wenn die Wiedergabe eines Films abbricht, schnell ins andere Zimmer spurten muss, um den Rechner wieder aufzuwecken.

 

Aus diesem Grund suche ich eine elegante Lösung für das Problem, und hatte gehofft, einer von euch hat vielleicht eine Idee.

 

Ich habe es schon mit unzähligen Suchen hier im Board und bei Google probiert und die verfügbaren Plugins durchgesehen, aber bisher nichts gefunden.

 

Eine unausgegorene Idee von mir wäre, auf dem Desktoprechner ein Skript zu erstellen, mit dem man den Standby aus- und wieder anschalten kann. Wäre so etwas möglich? Sprich, ist es möglich über die Dbox auf dem Desktoprechner ein Skript auszuführen? Gibt es eventuell alternative Herangehensweisen an das Problem?

 

Ich wäre für jede Hilfe dankbar.

 

mfg

Martin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Falls Dein PC Wake On Lan fähig ist, kannst Du das WOL-Timer-Plugin in Betracht ziehen. http://www.jackthegrabber.de/viewtopic.php?f=34&t=6724&start=0

Mit diesem Plugin wird der PC bei Timeraufnahmen rechtzeitig gestartet und nach der Aufnahme auch wieder runtergefahren. Du kannst dann den Standby des PC deaktivieren, da er nur noch an ist wenn es notwendig ist. Auch ein manuelles Starten und Stoppen des Rechners ist über die Box möglich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo DrStoned,

 

vielen Dank für deine Rückmeldung. Das WOL-Timer Plugin habe ich im Rahmen meiner Recherche bereits gefunden. Leider geht das am Kern des Problems vorbei. Mein Problem ist nicht primär das An- und Abschalten des Rechners, sondern der sich aktivierende Standby meines Ubuntusystems.

 

Das Ubuntusystem ist wie schon erwähnt ein Desktopsystem. Wenn du so willst der Familienrechner. Ein Deaktivieren des Standbys hätte in deinem Szenario den unschönen Nebeneffekt, das der Rechner die ganze Zeit laufen würde, auch wenn niemand davor sitzt. Aus Gründen des Stromsparens kommt eine Deaktivierung des Standbys also leider nicht in Frage.

 

Der Standby hat wiederum den Nachteil, dass Netzwerk und Festplattenaktivität nicht als Bedingung für ein Aussetzen des Standbys erkannt werden. Nur Maus und Tastaturevents vermögen das zu tun. Das ist die Zwickmühle in der ich sitze.

 

Mein Problem ist also nicht das An- und Abschalten des Rechners (WOL), sondern der Standby wegen fehlender Benutzertätigkeit am Ubuntusystem. Aus diesem Grund suche ich eine Möglichkeit, wie ich im Wohnzimmer über die DBox per Plugin, Skript oder Ähnliches die Standbyeinstellungen im Ubuntusystem für die Dauer der Filmwiedergabe/Aufnahme ändern kann, ohne jedesmal in das Arbeitszimmer rennen zu müssen.

 

Aufgrund meiner Recherchen weiß ich, dass man die Standbyeinstellungen unter Ubuntu per GConfTool auf der Kommandozeile ändern kann. Deswegen hatte ich den Gedanken, ob es möglich wäre, über die Dbox ein auf der NFS Freigabe liegendes Skript auszuführen, welches die Standbyeinstellungen im Ubuntusystem ändern kann. Ist so etwas prinzipiell möglich, oder bringe ich hier etwas durcheinander?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Man koennte die dbox einen Lock-File auf den NFS-Share schreiben lassen (per /var/tuxbox/config/recording.start; loeschen aus der /var/tuxbox/config/recording.end heraus) und regelmaessig (per cron z.B.) vom Server aus nach demselben suchen lassen. Die Existenz des Lock-Files wird dabei wie ein Schalter benutzt. Wenn dir das zu allgemein oder kryptisch ist, sag mal, welche Befehle genau dein Server zum An- und zum Ausschalten braucht und welches Intervall von Untaetigkeit zum 'Einschlafen' fuehrt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

sieh dir doch mal dieses Programm an:"AutoSuspend", dort kann st überprüfen lassen, ob ein Rechner im Netzwer da ist oder nicht, und entsprechend wird der Standby ausgelöst oder nicht. Wenn die DBoxII mit ihren Streaningaufgaben fertig ist fährst du sie ja runter, also sollte sie für den Ubunturechner nicht mehr im Netz zu sehen sein und er kann den Standby auslösen.

 

PeterF

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank euch beiden.

 

@hvkls

 

Die Idee mit dem LockFile und CronJob hört sich interessant an. Wobei diese Lösung soweit ich das verstehe nur für Aufnahmen funktioniert bzw. nur in diesem Fall den Standby abschalten würden. Tendenziell habe ich die Standbyprobleme aber viel öfter bei der Wiedergabe eines Filmes von der Festplatte. Die Lösung sollte also nach Möglichkeit für beide Fälle funktionieren.

 

Der Begriff "LockFile" ist mir momentan kein Begriff, aber ich vermute damit ist eine Datei gemeint, auf die während des Schreibens nur die Dbox Zugriff hat?

 

... welche Befehle genau dein Server zum An- und zum Ausschalten braucht und welches Intervall von Untaetigkeit zum 'Einschlafen' fuehrt.

Wie bereit weiter oben erwähnt, fährt der Rechner nach genau einer Stunde Inaktivität herunter. Die nötigen Befehle, um den Standby z.B. per Kommandozeile auszusetzen lauten:

 

gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 0

und

gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 3600

 

Der erste Befehl setzt den entsprechenden Schlüssel der Gnomekonfiguration auf 0 Sekunden, was den Standby deaktiviert. Der zweite setzt wieder ein Intervall von 3600 Sekunden <=> 1 Stunde, was den Ursprungszustand wiederherstellt.

 

Könnte man nicht einfach per Plugin aus dem DBox Menü irgend eine Art Textdatei auf die Platte schreiben, in der eine Variable gesetzt ist, die per CronJob überwacht wird? Sowas wie "Suspend=0. Vielleicht könnte man auch nur den Wert der Variable ändern ohne jedesmal die Datei neu schreiben zu müssen. Keine Ahnung. Ich spinne einfach ein bisschen herum. :D

 

 

@PeterF

 

Vielen Dank auch dir für den Tipp mit dem AutoSuspend Skript. Kann mir bestimmt bei der einen oder anderen Gelegenheit weiterhelfen. Für diesen Fall ist es leider nicht geeignet. Da wäre zunächst das Manko, das mit dem Skript keine NFS Verbindungen überwacht werden können.

 

NFS wird nicht auf aktive Verbindungen überwacht. ...

 

Erschwerend kommt hinzu, das die DBox nach ihren Streamingaufgaben (Aufnahme oder Wiedergabe) nicht zwangsläufig heruntergefahren wird. Tatsächlich kommt das fast nie vor. Irgend jemand schaut garantiert noch fern. Das heißt, die Box verschwindet nicht einfach aus dem Netz.

 

mfg

Martin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du moechtest also Aufnahme und Wiedergabe ueberwachen, wenn ich das richtig verstehe. Probier mal das:

 

dbox mit dem angenommenen Aufnahmeverzeichis /mnt/record:

 

Ans Ende der folgenden Dateien schreibst du jeweils

touch /mnt/record/.lock

 

/var/tuxbox/config/movieplayer.start

/var/tuxbox/config/recording.start

/var/tuxbox/config/recording.timer

 

Damit wird der Lockfile (Steuerdatei) vor Aufnahme oder Wiedergabe erzeugt.

 

Ans Ende der folgenden Dateien kommt

rm -f /mnt/record/.lock

 

/var/tuxbox/config/movieplayer.end

/var/tuxbox/config/recording.end

 

Damit wird die Steuerdatei am Ende von Aufnahme oder Wiedergabe geloescht.

 

Auf dem Ubuntu-Server schreibst du in die /etc/crontab (vorausgesetzt,

which gconftool-2

gibt wirklich /usr/bin/gconftool-2 aus):

 

*/20 * * * * root [ -f /mnt/record/.lock ] && /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 0 || /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 3600

 

Das bedeutet, dass das System alle 20 Minuten nachsieht, ob /mnt/record/.lock existiert. Wenn ja, wird der Schlafmodus deaktiviert, andernfalls auf eine Stunde gesetzt.

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielleicht besser

 

*/20 * * * * root test -f /mnt/record/.lock  && /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 0 || /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 3600 >/dev/null 2>&1

 

Wobei hier /mnt/record das per NFS freigegebene Verzeichnis auf dem Server ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo hvkls,

 

bin gerade dabei, deinen Vorschlag nachzuvollziehen. :D Sieht auf alle Fälle viel versprechend. Ich werde das austesten und mich natürlich zurückmelden, wenn ich einen Erfolg vermelden kann.

 

Zwei Fragen noch zu der crontab Zeile. gconftool-2 liegt übrigens wirklich unter /usr/bin/gconftool-2. Die Standby Einstellungen werden in der Gnomekonfiguration des gerade angemeldet Benutzers abgespeichert. Müsste man den CronJob dann nicht eigenlich unter dem Benutzerkonto des angemeldeten Benutzers ausführen? Also so:

 

*/20 * * * * user test -f /mnt/record/.lock  && /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 0 || /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 3600 >/dev/null 2>&1

Würde man ansonsten nicht die Standby-Einstellungen des root Users in der Gnomekonfiguration ändern, statt die des angemeldeten Benutzers?

 

 

Müsste man den Teil >/dev/null 2>&1 am Ende der false Anweisung nicht auch in die true Anweisung schreiben? Soweit ich das verstehe, sorgt der Teil dafür, dass keine Ausgabe auf der Standardausgabe stattfindet, richtig?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zunaechst, du hast Recht, was das die Konsolenumleitung betrifft (sorry):

 

# /etc/crontab
*/20 * * * * root ( /usr/bin/test -f /mnt/record/.lock && /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 0 || /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 3600 ) >/dev/null 2>&1

 

Ich denke, dass es keinen Unterschied machen sollte, dass root das System schlafen legt? Falls doch, nimmst du statt der/etc/crontab die des Users, die an die du per "crontab -e" herankommst. Dort waere die Syntax etwas anders,

 

# crontab des eingeloggten aktiven Users
*/20 * * * * ( /usr/bin/test -f /mnt/record/.lock && /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 0 || /usr/bin/gconftool-2 --type int --set /apps/gnome-power-manager/timeout/sleep_computer_ac 3600 ) >/dev/null 2>&1

 

Mit "crontab -l" kann man die User-crontab-anschauen.

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

So, bin leider erst jetzt dazugekommen, mit den Änderungen anzufangen. Für denn Anfang habe ich mir gedacht, ich fange mal mit dem Movieplayer an, um die Änderungen zu testen. Habe also der Datei "/var/tuxbox/config/movieplayer.start" den Befehl

 

touch /mnt/filme/.lock

am Ende hinzugefügt. Funktioniert einwandfrei, soll heißen, ich kann die .lock Datei sehen, wenn ich am Rechner das Verzeichnis checke und die verborgenen Dateien anzeigen lasse.

 

Als nächstes habe ich also der Datei "/var/tuxbox/config/movieplayer.end" den Befehl

rm -f /mnt/filme/.lock

am Ende hinzugefügt.

 

Hier liegt offenbar das Problem. Wenn ich den Movieplayer bzw. die Wiedergabe des Filmes nämlich mit der HOME Taste auf der Fernbedienung beende, wird die .lock Datei nicht gelöscht.

 

Die movieplayer.end sieht am Dateiende folgendermaßen aus:

 

...
fi #RESCUE
pidof msgbox > /dev/null && killall msgbox #RESCUE
fi #RESCUE

exit 0
rm -f /mnt/filme/.lock

 

Zuerst habe ich gedacht, es liegt am Exitcode. Deswegen habe ich die "rm" Anweisung vor das "exit 0" geschrieben. Das hat aber leider auch nichts geholfen. Was mache ich also bloß falsch?

 

Ist das Beenden des Movieplayers mit der HOME Taste vielleicht nicht der korrekte Ablauf, damit die movieplayer.end Datei aufgerufen wird?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Deswegen habe ich die "rm" Anweisung vor das "exit 0" geschrieben. Das hat aber leider auch nichts geholfen.

Das habe ich, wie weiter oben beschrieben, bereits probiert. Tatsächlich sieht die "movieplayer.end" momentan so aus:

 

   	...
   	fi #RESCUE                                    
pidof msgbox > /dev/null && killall msgbox #RESCUE
fi #RESCUE                                            
rm -f /mnt/filme/.lock                                     	                 
exit 0

 

Ich kenne mich mit Bash Skripten leider nicht aus, aber kann es sein, dass die "rm"-Anweisung weiter nach oben gehört? Das Skript macht auf mich den Eindruck, als ob alles weiter unter nur noch Subroutinen sind, die von irgendwo weiter oben aufgerufen werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Befehl kann ruhig am Ende stehen; 'exit 0' ist nicht erforderlich. Lass mal das -f mal weg, kann sein, dass die BusyBox den Parameter nicht mag (rm /mnt/filme/.lock).

 

PS: Bin ab morgen frueh erstmal im Urlaub, nicht dass du dich wunderst

Link zu diesem Kommentar
Auf anderen Seiten teilen

Lass mal das -f mal weg, kann sein, dass die BusyBox den Parameter nicht mag

Hat leider auch nichts geholfen. Die Datei wird weiterhin beim Beenden des Movieplayers nicht gelöscht. Ich habe mich testweise mal per telnet auf die Box verbunden, und den "rm" Befehl manuell auf der Kommandozeile eingegeben.

 

Manuell funktioniert es tadellos. Sogar die "-f" Option scheint kein Problem zu sein. Es muss also irgendwie am Skript liegen. Sieht fast so aus, als würde das Skript überhaupt nicht ausgeführt werden.

 

Durch Drücken der HOME Taste auf der Fernbedienung, wird der Movieplayer doch beendet, oder nicht? Ich meine, ist das der korrekte Weg?

 

Viel Spaß übrigens im Urlaub. Wie lange dauert der denn, damit ich einen Anhaltspunkt habe, wann ich wieder mit deiner Hilfe rechnen kann. :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zum '-f': Die BusyBox verwendet die ash-Shell, die im Vergleich zur bash recht funktionsbeschraenkt ist, wobei der Funktionsumfang auch noch je nach Kompilierungsoption variiert. Ohne '-f' geht's immer.

 

Die Home-Taste (bis zum Hauptmenue) beendet den Movieplayer. Wie lange es genau dauert, bis die Scripts durch sind, weiss ich nicht. Aber nach maximal 30 Sekunden solltest du das Ergebnis eigentlich sehen.

 

Probier mal "/bin/rm /mnt/filme/.lock" und mach (einmalig) ein "chmod 0755 /var/tuxbox/config/movieplayer.end".

 

Wenn das auch nichts bringt, liegt es wohl an den Datei- oder den NFS-Rechten. Mit "ls -l /mnt/filme/.lock ; ls -ld /mnt/filme" kann man die Dateirechte ansehen; mit "mount" auf der dbox und durch Ansehen der /etc/exports auf dem Server die NFS-Rechte herausbekommen. "rw"

 

-- Morgen geht's sehr frueh los, ich bin in drei Wochen wieder da <g>. Aber jetzt bin ich noch einige Zeit online, wenn du noch testen magst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Probier mal "/bin/rm /mnt/filme/.lock" und mach (einmalig) ein "chmod 0755 /var/tuxbox/config/movieplayer.end".

Beides probiert. Hat aber nichts gebracht. Die Datei wird immer noch nicht gelöscht.

 

   	...
   	fi #RESCUE                                                
pidof msgbox > /dev/null && killall msgbox #RESCUE    
fi #RESCUE                             	                                     
/bin/rm /mnt/filme/.lock                                          
exit 0

 

Die Dateirechte sehen folgendermaßen aus:

 

/var/tuxbox/config # ls -l movieplayer.end
-rwxr-xr-x	1 root 	root      	2718 Aug 14 21:30 movieplayer.end
/var/tuxbox/config #

 

Wenn das auch nichts bringt, liegt es wohl an den Datei- oder den NFS-Rechten

Wieso funktioniert es dann, wenn ich mich per Telnet auf die Box verbinde, und den "rm" Befehl manuell eingebe?

 

Ausgabe von "ls -l /mnt/filme/.lock"

 

/var/tuxbox/config # ls -l /mnt/filme/.lock
-rw-r--r--	1 1000 	1000 			0 Aug 14 21:35 /mnt/filme/.lock
/var/tuxbox/config #

 

Ausgabe von "ls -ld /mnt/filme"

 

/var/tuxbox/config # ls -ld /mnt/filme
drwxr-xr-x	9 1000 	1000      	4096 Aug 14 21:35 /mnt/filme
/var/tuxbox/config #

 

Inhalt meiner "/etc/exports"

 

# /etc/exports: the access control list for filesystems which may be exported
#   			to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes   	hostname1(rw,sync) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4    	gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/homes  gss/krb5i(rw,sync)
#
/Movies dbox(rw,async,anongid=1000,anonuid=1000)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das sieht alles gut aus, ich weiss leider nicht, wo's hakt. Vielleicht schreibst du den Befehl doch mal direkt unter das Shebang (#!/bin/sh) und fuehrst ein "dos2unix /var/tuxbox/config/movieplayer.end" aus. Wenn das nicht hilft, bin ich erstmal ueberfragt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich den Befehl direkt unter den Shebang schreibe, funktioniert es tatsächlich. movieplayer.end sieht jetzt so aus:

 

#!/bin/sh
# Version 0.2 - by stachi - mod by GetAway [2008-10-23]

rm -f /mnt/filme/.lock

[ -e /tmp/.daemon_h ] && rm /tmp/.daemon_h
...
...
...
   	fi #RESCUE                                                
pidof msgbox > /dev/null && killall msgbox #RESCUE        
fi #RESCUE                                                     	             

exit 0

Das ganze ohne dos2unix.

 

Was nun? So lassen? Werden die Befehle unter dem "rm" Befehl trotzdem noch abgearbeitet?

Link zu diesem Kommentar
Auf anderen Seiten teilen

rm -f /mnt/filme/.lock 2>/dev/null

Trage ich noch nach.

 

Dann sage ich schon mal bis hierher Dankeschön für deine unermüdliche und kompetente Hilfe. :D Mit diesem kleinen Erfolg mache ich dann mal Schluß für heute.

 

Wünsche dir natürlich einen erholsamen und schönen Urlaub.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.
×
×
  • Neu erstellen...