1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Talk Server bei Inaktivität in S5?

Dieses Thema im Forum "CS Root & Vserver" wurde erstellt von dumbshitaward, 15. August 2012.

  1. dumbshitaward
    Offline

    dumbshitaward Freak

    Registriert:
    27. August 2010
    Beiträge:
    273
    Zustimmungen:
    95
    Punkte für Erfolge:
    28
    Hallo Leute,

    habe mir jetzt endlich mal einen ThinClient zugelegt, ist ein Futro S400 geworden, da ich das Teil auch für andere Zwecke (z.B. Datengrab - ja ich weiß, gibt keine irren Geschwindigkeiten, muss es aber auch nicht) missbrauchen möchte und nicht "nur" einen OSCam Server darauf laufen habe.

    Jetzt habe ich folgende Idee: der Cardserver wird eigentlich nur zu bestimmten Tageszeiten benutzt, es hängen im Endeffekt nur vier Personen dran und die schauen meist nur zwischen 18 und 24h. Insofern wäre es natürlich Overkill das Ding Tag und Nacht durchlaufen zu lassen.

    Die eine Hälfte habe ich schon hinbekommen, nämlich den Futro aus dem Soft-Off (ACPI S5) per WOL (ja, entgegen anderslautender Behauptungen geht das bei den S400 wunderbar, zumindest wenn ein Realtek RTL8169 GBit Ethernet Chip verbaut ist) wieder aufzuwecken, sobald irgendwas auf die entsprechenden Ports meiner FritzBox zugreift (d.h. muss nicht mal ein Magic Packet sein, eine simple NFS oder newcamd-Anfrage löst auf der Fritz das Magic Packet aus, Resultat der Futro fährt hoch, OSCam initalisiert und nach 40 Sekunden läuft die Mühle).

    Als absoluter Linux-Noob habe ich jedoch so meine Schwierigkeiten das Ding adäquat ins Bett zu schicken: ich möchte natürlich nicht, dass das Ding nach einem festgelegten Zeitraum einfach so mir nichts, dir nichts schlafen geht, nur um Sekunden später wieder aufgeweckt zu werden. Könnte man OSCam irgendwie überwachen, z.B. per cron, dass das System nach einer bestimmten idle Zeit (d.h. in diesem Fall keine EMM Anfragen oder reconnects von Clients, möglicherweise über das Log?) einfach herunterfährt oder vielleicht gar in suspsend to RAM geht?

    Ich erwarte keine genaue Anleitung (wobei das natürlich sehr nett wäre), sondern erstmal eigentlich nur, ob sowas überhaupt möglich ist und falls ja, ob man das jemandem zutrauen kann, der gestern erst seinen ersten Debian-Server (erfolgreich) aufgesetzt hat?
     
    #1
  2. phantom

    Nervigen User Advertisement

  3. aragorn
    Online

    aragorn Guest

    AW: Server bei Inaktivität in S5?

    hoffentlich schreibst du nicht soviel auf der compact flash herrum sonst lebt die nicht mehr lange ;)

    "suspend to ram" hängt davon ab wieviel ram du hast. das wär natürlich die schnellere möglichkeit da das system innerhalb weniger sekunden wieder online wär.. ansonsten müsstest du eben "suspend to disk" nutzen
    guck dir dazu mal das hier an:

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?


    dazu solltest du beachten das "suspend to disk" standard mässig in den swap geschrieben wird. der befindet sich aber standard mässig auf der compact flash also dem systemlaufwerk. die kannst du aber auch deaktivieren und alternativ ein swapfile auf einer deiner datengraben-laufwerke auslagern :)

    nun zu deinem "wann geht er schlafen" anliegen: man könnte das oscam log überwachen indem man über crontab jede minute ein script laufen lässt was die letzten zeilen ausliest. findet man dann keine aktivität zum beispiel in einem zeitraum von 5 minuten würde das script den thin client schlafen schicken.. sowas müsste man aber erst basteln. wär mir nicht bekannt das es sowas schon fertig gibt

    ständig komplett neu starten würde wie gesagt die compact flash zu sehr belasten. die verträgt nicht allzu viele schreib/lese zyklen.. deshalb lassen die meisten den kleinen rechner einfach laufen


    edit: alternativ kannst du das aber natürlich auch einfacher gestalten indem du den rechner einfach nachts um zum beispiel 1uhr herrunter fährst -> /etc/crontab
    Code:
    00 01 * * * root poweroff  #System herrunter fahren (Taeglich um 01:00)
     
    Zuletzt von einem Moderator bearbeitet: 15. August 2012
    #2
  4. dumbshitaward
    Offline

    dumbshitaward Freak

    Registriert:
    27. August 2010
    Beiträge:
    273
    Zustimmungen:
    95
    Punkte für Erfolge:
    28
    Wird denn beim Shutdown auf die CF überhaupt geschrieben?

    Bis dato läuft die Kiste durch, OSCam Log wird in eine RAMdisk geschrieben. Bin ohnehin am überlegen ob ich dem Futro eine kleine SSD spendiere, dann ist das Problem zumindest kleiner.

    Danke aber für die Hinweise, dann muss ich mich mal mit Crontab auseinandersetzen.

    Suspend to Disk wäre sinnvollerweise nur mit Magnetspeicher möglich, Suspend to RAM (wenns funktioniert) nice to have.
     
    #3
  5. aragorn
    Online

    aragorn Guest

    AW: Server bei Inaktivität in S5?

    beim shutdown werden dienste beendet die wiederum löschen pid files oder schliesen logfiles und gelesen wird natürlich auch

    eine ssd nutzt eine ähnliche technik (speicher bausteine) wie eine compact flash also der einzige vorteil wär das die schneller wär aber trotzdem nicht so viele lese/schreibzyklen wie eine festplatte verträgt..
    tmp2ram.sh ist aber schon mal gut ;)
    allgemein solltest du auf dem system laufwerk nicht so viel herrum schreiben (datengrab).

    wegen crontab guck dir mal mein edit oben an vielleicht reicht dir das ja auch schon
     
    #4
  6. dumbshitaward
    Offline

    dumbshitaward Freak

    Registriert:
    27. August 2010
    Beiträge:
    273
    Zustimmungen:
    95
    Punkte für Erfolge:
    28
    Hm okay.

    Naja im Endeffekt ist auf der 4GB CF vielleicht ein halbes GB belegt und selbst bei 100k write cycles und einem halbwegs brauchbaren wear leveling sollte da schon einige Zeit ins Land gehen bis "nur" durch Shutdown und booten sowie betriebssystembedingten Schreibzugriffen die CF die Grätsche macht.
     
    #5
  7. aragorn
    Online

    aragorn Guest

    AW: Server bei Inaktivität in S5?

    naja die praxis sieht anders aus. hier gabs schon oft leute die meinten das billige compact flash karten bereits nach einem halben jahr trotz "normalen" betriebs kaputt gegangen wären. natrlich erwähnen diejenigen dann leider zwar nicht ob sie sowas wie tmp2ram.sh oder ähnlich nutzten aber bei dir kommt ja dazu das du bewusst auf der cf daten auslagerst :D
    durch tmp2ram.sh wird übriegends der ganze log ordner auch jedesmal beim herrunter fahren gesichert und beim beim booten wieder hergestellt.. also müsste man da noch ein bishen mehr beachten
     
    #6
  8. dumbshitaward
    Offline

    dumbshitaward Freak

    Registriert:
    27. August 2010
    Beiträge:
    273
    Zustimmungen:
    95
    Punkte für Erfolge:
    28
    AW: Server bei Inaktivität in S5?

    Nee nee... ich speichere keine Daten auf der CF, da ist bis dato nur IPC mit OSCam, sonst gar nichts.

    Die Erweiterung zum NAS kommt erst noch und das läuft dann selbstverständlich mit Festplatten (da muss ich mir dann noch was für die swap überlegen).
     
    #7
  9. aragorn
    Online

    aragorn Guest

    AW: Server bei Inaktivität in S5?

    naja wie gesagt wird /var/log/ beim herrunter fahren gesichert und beim hoch fahren wiederhergestellt.. wenn du komplett auf die logs verzichten kannst (fehlersuche wird ohne logs schwierig) könntest du das varlog script auch wieder runter werfen aber super wichtig ist das du dann über ein anderes script die verzeichnisstruktur für /var/log/ manuell anlegen würdest da sonst viele dienste nicht gestartet werden..

    und was willst du dir für die swap überlegen? swap wird nur auf dem system laufwerk angelegt. die kannst du super simpel auslagern. solltest du aber nicht auf einen usb stick packen sonst bremst du das system aus
     
    #8
  10. dumbshitaward
    Offline

    dumbshitaward Freak

    Registriert:
    27. August 2010
    Beiträge:
    273
    Zustimmungen:
    95
    Punkte für Erfolge:
    28
    AW: Server bei Inaktivität in S5?

    Sodala...

    Ich habe jetzt mal ein Script geschrieben, dass die letzte Zeile der OSCam.log ausliest, ein paar Sekunden wartet, die Zeile nochmals ausliest und dann ggf. die Büchse runterfährt.

    Ich bin mir voll und ganz dessen bewusst, dass es hier wahrscheinlich einen Haufen Leser geben wird, denen es beim Lesen die Zehennägel aufrollen wird, aber dafür, dass es mein wirklich allererstes bash script ist bin ich eigentlich ganz zufrieden, da es sogar läuft :yahoo:.

    Einwände und Verbesserungen sind natürlich hochwillkommen.

    Folgendes würde ich gerne noch einbauen: es soll ebenso überprüft werden, ob derzeit ein User (per SSH) eingeloggt ist und falls ja, natürlich nicht herunterfahren.

    Edit: Ich habe mir gedacht, dass es evtl. sinnvoll wäre erst mal zu schauen, ob OSCam überhaupt läuft, da man sich sonst in eine unnötige reboot-Schleife bolzen könnte (Logfile verändert sich nicht -> Shutdown, nächste Anfrage des Clients, Kiste bootet über WOL, keine Aktivität, fährt wieder runter, usw.)
    Änderungen in rot hinzugefügt:

    Code:
    #! /bin/bash
    
    [COLOR=#ff0000]# Check if OSCam is running
    ps cax | grep oscam.x86 > /dev/null
    if [ $? -eq 0 ]; then
    # echo 'OSCam still running'[/COLOR]
    
    # Read last line of oscam.log and store in variable
    firstline=$(sed -n '$p' ~/oscam.log)
    
    # Check if value stored
    # echo "$firstline"
    
    # wait
    sleep 15s
    
    # Read last line of oscam.log again
    secondline=$(sed -n '$p' ~/oscam.log)
    # Check if other value stored
    # echo "$secondline"
    
    # Compare lines and shutdown if inactive
    if [ "$firstline" != "$secondline" ]
    then
    :
    else
    echo 'Shutting down...'
    sudo shutdown -h now
    fi
    [COLOR=#ff0000]else
    echo 'OSCam has crashed!'
    fi[/COLOR]
    
     
    Zuletzt bearbeitet: 16. August 2012
    #9
    1 Person gefällt das.
  11. aragorn
    Online

    aragorn Guest

    AW: Server bei Inaktivität in S5?

    für dein erstes script wirklich super :)

    als kleiner tip um eine bessere übersicht zu haben kannst du vielleicht noch ein paar <tabs>´s einfügen:
    Code:
    #! /bin/bash
    
    oscamlog=~/oscam.log
    
    # Check if OSCam is running
    ps cax | grep oscam.x86 > /dev/null
    if [ $? -eq 0 ]; then
        #echo 'OSCam still running'
        
        # Read last line of oscam.log and store in variable
        firstline=$(sed -n '$p' $oscamlog)
        
        # Check if value stored
        #echo "$firstline"
        
        # wait
        sleep 15s
        
        # Read last line of oscam.log again
        secondline=$(sed -n '$p' $oscamlog)
        # Check if other value stored
        #echo "$secondline"
        
        # Compare lines and shutdown if inactive
        if [ "$firstline" != "$secondline" ]; then
            dummy=1
        else
            echo 'Shutting down...'
            sudo shutdown -h now
        fi
    else
        echo 'OSCam has crashed!'
    fi
    den wait timer würde ich aber noch ein bischen höher setzen. 30 oder 60 sekunden sollte besser sein
    ob jemand auf der konsole angemeldet ist kannst du über den befehl " who " oder " w " herrausfinden. also zum beispiel
    Code:
        if [ -z "$(who)" ]&&[ "$firstline" = "$secondline" ]; then
            echo 'Shutting down...'
            sudo shutdown -h now
        fi
     
    #10
  12. dumbshitaward
    Offline

    dumbshitaward Freak

    Registriert:
    27. August 2010
    Beiträge:
    273
    Zustimmungen:
    95
    Punkte für Erfolge:
    28
    AW: Server bei Inaktivität in S5?

    Danke, werde ich in Zukunft beherzigen, wusste nur nicht ob Tabs evtl. einen Effekt haben, ist aber wesentlich übersichtlicher und das Definieren des Werts "oscamlog" spart auch Tipparbeit.

    Nur damit ich das was du mir da gegeben hast auch verstehe, ein paar Fragen, wenns gestattet ist (bin eh überrascht, dass das ganze im Einstieg gar nicht so schwer ist, hat mich ca. 1 1/2 Stunden arbeit gekostet, ich habe eigentlich den ganzen Tag verplant gehabt):


    Code:
        if [ -z "$(who)" ]&&[ "$firstline" = "$secondline" ]; then 
    'if' ist klar.
    '-z' ist mir nicht klar. Was bewirkt dieser Schalter bzw. auf welchen Befehl bezieht sich der? auf if?
    $ ist eine Wildcard für eine Variable, oder? (who) Gibt dann wohl den Wert dafür an (was ist der? String?)
    Ich hatte mit
    who -d | grep '$usernamen' > /dev/null
    if [ '$username' = 0 ]; then ...
    experimentiert, hatte halt das konstruktionsbedingte Problem, dass es nur mit Positivlisten funktionieren würde, zudem noch eine Latte an Syntaxfehlern enthalten hat.
    '&&' *headdesk* na da hätte man echt draufkommen können, ich hatte am Schluss ein Geschachtel an if/then/else Schleifen, wo ich selbst kaum mehr durchgeblickt hab.
    Rest ist klar.

    Jetzt habe ich aber ein weiteres Problem entdeckt:

    who spuckt keine Anmeldungen am ftp-Server aus, ergo würde der Server ja trotz angemeldetem FTP-User herunterfahren. Dass man da mit "ftpwho" drankommt habe ich inzwischen herausgefunden, nur wirft mir ftpwho standarmäßig ohne Anmeldung sowohl den Daemon als auch "no users connected" aus, d.h. ich kann das ja nicht mit null gleichsetzen, weil ja in allen Fällen eine Ausgabe kommt.
    Ich habe da mit grep ein wenig experimentiert, aber irgendwie klappte das überhaupt nicht, also hab ich's verworfen (und kann dir somit auch nicht mehr sagen, was ich falsch gemacht habe).

    Danke jedenfalls noch mal für die Hilfe

    Edit: Habe das ganze jetz noch um eine Ausgabe erweitert, damit man zur Not auch sehen kann, welcher Depp da den Shutdown blockiert,

    also noch

    Code:
    else 
    echo "$(who)" 'is still connected.'
     
    Zuletzt bearbeitet: 16. August 2012
    #11
  13. aragorn
    Online

    aragorn Guest

    AW: Server bei Inaktivität in S5?

    ich versuch das mal zu erklärn:
    " -z " prüft ob der nachfolgende wert gesetzt oder leer ist. also "if" sollte klar sein das ist eine bedingungs-schleife.
    also: " if -z $(who) ; then.. " -> wenn $(who) nicht gesetzt oder leer ; dann..
    dazu gibts eben auch dann die " ! -z $(who) " -> wenn $(who) nicht leer..
    " ! -z " kann man aber auch mit " -n " machen

    du hast doch zuvor auch befehle mit $( ) genutzt.. das innerhalb $( ) wird ausgeführt und die ausgabe dort zurück gegeben.. das ist also genau so wie: x=`echo bla`

    das kann so nicht funktionieren. das hast du im linuxforum gelesen oder? da fehlt noch der wert in $username nach dem gegrept wird ;)

    ja du kannst auch mehrere verschachtelungen machen also if ... then if ... then fi fi. es gibt immer mehrere wege etwas zu lösen ;)
    du könntest solche sachen auch ohne "if" und "then" schreiben zum beispiel so:
    Code:
    [ -z "$(who)" ]&&[ "$firstline" = "$secondline" ]&&shutdown -r now
    "who" wirft aber nicht nur den benutzer aus sondern mehrere zeilen.. also wenn du nur den benutzer haben willst nutzt du lieber: $(who|awk {'print $1'})

    kann ich dir so auch nicht sagen da ich kein ftpd nutze und somit auch kein ftpwho hab.. aber ich würd mal vermuten das pro verbindung auch ein prozess läuft oder nicht? mach mal eine ftp verbindung und poste dann die ausgabe von: ps auxw|grep ftp
     
    Zuletzt von einem Moderator bearbeitet: 16. August 2012
    #12
  14. dumbshitaward
    Offline

    dumbshitaward Freak

    Registriert:
    27. August 2010
    Beiträge:
    273
    Zustimmungen:
    95
    Punkte für Erfolge:
    28
    AW: Server bei Inaktivität in S5?

    Danke für deine Erläuterungen, sollte es jetzt zumindest grudnsätzlich verstanden haben, jetzt ist mir so einiges klarer.

    ps auxw | grep ftp spuckt bei eingeloggtem FTP-User folgendes aus:
    Code:
    root@cookiemonster ~ > ps auxw | grep ftp
    proftpd   1288  0.0  0.3   7636  1648 ?        Ss   21:33   0:00 proftpd: (accepting connections)
    1000     19086  0.1  0.6   8244  3220 ?        S    22:18   0:00 proftpd: dumbshitaward - dumbshitaward.router: IDLE
    root     19767  0.0  0.1   3316   792 pts/1    S+   22:19   0:00 grep ftp
     
    #13
  15. Der Sensemann
    Offline

    Der Sensemann Ist oft hier

    Registriert:
    10. August 2011
    Beiträge:
    138
    Zustimmungen:
    46
    Punkte für Erfolge:
    28
    AW: Server bei Inaktivität in S5?

    Mal noch als kleine Anmerkung, was du vieleicht nicht bedacht hast;-)
    Wenn du deinen Server immer schlafen schickst, ist somit auch deine Loadbalance statistics futsch! falls du diese benutzen solltest.

    Ich bin mir nicht sicher, ob es dir um das Strom sparen geht, ansonsten ist es immer Sinnvoller ein gutes System laufen zulassen, als es ständig wieder neu zu starten, aber da kann dir Aragon mehr zu sagen, oder auch einige Berichte hier im Forum.
     
    #14
  16. dumbshitaward
    Offline

    dumbshitaward Freak

    Registriert:
    27. August 2010
    Beiträge:
    273
    Zustimmungen:
    95
    Punkte für Erfolge:
    28
    AW: Server bei Inaktivität in S5?

    Ja, das habe ich schon bedacht, geanuso wie alle Logs weg sind (da sie alle in die ramdisk schreiben), aber das ist mir nicht sonderlich wichtig. Loadbalancer nutze ich ohnehin nicht (habe von jeder Karte eh nur eine).

    Mir gehts ausschließlich ums Stromsparen, selbst wenn ich durch das "ständige" rauf- und runterfahren die CF Karte binnen eines Jahres demoliere, dann wars immer noch billiger als den Strom den ich vebrauchen würde ;).

    Musst das so sehen: der Server ist vom Useraufkommen her winzig. Da hängen meine Frau, meine Schwiegereltern und ich (Wortspiel nicht beabsichtigt) drin, dazu noch mein Mitbewohner, der quasi nie fern sieht, ebenso wie meine Mutter. Mehr als drei User habe ich auf einmal noch nie erlebt.
     
    #15
    Der Sensemann gefällt das.

Diese Seite empfehlen