Cronjob

Dieses Thema im Forum "Debian/Ubuntu/Knoppix" wurde erstellt von Snarkoom, 04.03.2008.

  1. #1 Snarkoom, 04.03.2008
    Snarkoom

    Snarkoom Linux Noob

    Dabei seit:
    14.02.2007
    Beiträge:
    12
    Zustimmungen:
    0
    Ort:
    Bergkamen
    Hallo Unixboard User,
    vorweg, ich habe kein Plan von Cronjobs (Crontabs?)..

    So, ich habe einen Chat auf meinem vServer laufen.
    Dieser muss jeder Nacht einmal Neugestartet werden, genauso wie MySQL..

    Der Chat wird mit dem User " smilechat " gestartet.
    Wenn der User eingeloggt ist, wechselt dieser mit " cd bin " in das " bin " Verzeichniss. Nun muss erst der Chat gekillt werden. Dazu muss ersteinmal " ps -x " eingegeben werden, um zu gucken, welche PID der Chat benutzt.
    Wenn der Chat gekillt ist, muss im " bin " Verzeichniss " ./sc " ausgeführt werden und der Chat läuft.

    Wie kann ich das in einem Cronjob verwirklichen?
    Das gleiche mit MySQL. Dort muss ja nur " /etc/init.d/mysql restart " gemacht werden.

    Nun, wie geht das?

    mfg

    Edit: Linux Debian Etch (4.0)
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Hanshiro, 04.03.2008
    Hanshiro

    Hanshiro Mitglied

    Dabei seit:
    04.01.2008
    Beiträge:
    40
    Zustimmungen:
    0
  4. ragnar

    ragnar Doppel-As

    Dabei seit:
    25.10.2004
    Beiträge:
    139
    Zustimmungen:
    0
    Ort:
    Düsseldorf
    Hallo,

    das wonach du suchst kommt eher in die Sparte Runlevel da die ja nur während des Systemstarts mitgeladen werden. Crontabs sind eher für Sachen die regelmäßig ( alle 5 Minuten, einmal die Stunde, einmal am Tag usw. ) aufgerufen werden.

    Zum Thema Runlevel gugst du hier : http://www.remoteshell-security.com/lintip.php#ta1
     
  5. #4 bitmuncher, 05.03.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Code:
    mkdir /root/scripts
    cd /root/scripts
    cat >> chat_restart.sh << "EOF"
    #!/bin/bash
    
    # in den Chat-Ordner wechseln, wo die Datei 'sc' liegt. Pfad anpassen!
    cd /pfad/zu/deinem/chat/bin-ordner
    
    # prozess aus der prozessliste holen, PID extrahieren und an kill weiterreichen
    # "gesuchter-prozessname" anpassen!
    kill `ps ax | grep "gesuchter-prozessname" | awk '{print $1}'`
    
    # chat starten
    ./sc
    
    # MySQL neustarten
    /etc/init.d/mysql restart
    EOF
    chmod +x /root/scripts/chat_restart.sh
    
    Danach noch folgende Zeile in die /etc/crontab um den Chat und die MySQL um 2:00 Uhr morgens neuzustarten.

    Code:
    0 2 * * * root /root/scripts/chat_restart.sh
    
    Das sollte eigentlich dann deinen Zweck erfüllen. Ich an deiner Stelle würde mir aber mal einen Kopf darum machen wieso deine MySQL diese Restarts braucht. Normal ist so ein Verhalten des MySQL-Servers ja nun nicht.

    Wichtig: "gesuchter-prozessname" muss so eindeutig sein, dass du nicht aus Versehen einen anderen Prozess erwischst. Ein "sc" z.B. wäre ziemlich unsicher. Eindeutiger wäre dann ein "./sc". Schau halt wie ein Eintrag des Chat-Prozesses in der Prozessliste aussieht und verwende dann einen möglichst eindeutigen String.
     
  6. #5 Snarkoom, 05.03.2008
    Snarkoom

    Snarkoom Linux Noob

    Dabei seit:
    14.02.2007
    Beiträge:
    12
    Zustimmungen:
    0
    Ort:
    Bergkamen
    Danke, sehr nice! :)
    Werde ich mir heute Mittag mal angucken :)

    Edit: Geht das auch, das der Chat mit dem User " smilechat " gestartet wird?
    Root is mir n bissel unsicher..
     
  7. #6 bitmuncher, 05.03.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Einfach ein 'sudo -u smilechat ./sc' anstelle des './sc' im Skript verwenden.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 Snarkoom, 05.03.2008
    Zuletzt bearbeitet: 05.03.2008
    Snarkoom

    Snarkoom Linux Noob

    Dabei seit:
    14.02.2007
    Beiträge:
    12
    Zustimmungen:
    0
    Ort:
    Bergkamen
    Danke nochmal, habe jetzt mal alles eingebunden, und das Script so ausprobiert.
    Funktioniert wunderbar! :)

    Nun nur noch gucken, ob mit der Crontab klappt, werde mich morgen früh nochmal melden.
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Nabend nochmal, hab da noch eine Frage, wie mache ich das jetzt, das sich der Chat beim Starten des Servers startet? (wenn der mal abstürzen sollte).

    Wenn mir das auch noch jemand machen könnte wäre das sehr nice, dann hab ich 2 Sachen an die ich mich bei anderen Programmen halten kann.

    mfg
     
  10. #8 bitmuncher, 05.03.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Code:
    cd /etc/init.d
    cat >> chat.sh << "EOF"
    #!/bin/bash
    
    case "$1" in
    start)
      cd /pfad/zu/deinem/chat/bin-ordner
      ./sc
      ;;
    stop)
      kill `ps ax | grep "gesuchter-prozessname" | awk '{print $1}'`
      ;;
    *)
      echo "Usage: `basename $0` {start|stop}" >&2
      exit 64
      ;;
    esac
    
    exit 0
    EOF
    chmod +x /etc/init.d/chat
    update-rc.d chat defaults
    
    Die gleichen Anpassungen wie oben vornehmen und dein Chat wird zukünftig beim Server-Reboot mitgestartet.

    Wenn allerdings nur der Chat abstürzt, wirst du ihn selbst wieder neustarten müssen. Alternativ bastelst du dir einen Watchdog, der via Cron regelmässig in der Prozessliste nachschaut ob der Prozess noch da ist und wenn er ihn nicht findet diesen neustartet. Dafür wirst du allerdings mal selbst deinen Kopf anstrengen müssen. Die notwendigen Grundlagen sind ja schon in chat_restart.sh enthalten.
     
Thema:

Cronjob

Die Seite wird geladen...

Cronjob - Ähnliche Themen

  1. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  2. Cronjob

    Cronjob: Hallo Bin mir nicht sicher ob dass so Möglich ist... Ich möchte dass ein Job von 02:00 Uhr Nachts bis 03:00 Uhr Nachts NICHT läuft. *...
  3. Cronjob um Dateien und Ordner die älter als 7 Tage sind löschen

    Cronjob um Dateien und Ordner die älter als 7 Tage sind löschen: Hallo, ich habe auf einem Server einen HTTP File-Explorer installiert (AjaXplorer), auf dem User Dateien hochladen und verschicken können....
  4. Cronjob mit Root-Rechten

    Cronjob mit Root-Rechten: Hallo zusammen. Ich habe ein Backup-Skript (Shell-Skript) erstellt, das alle relevanten Daten via ssh auf einen Server lädt. Das Skript wird...
  5. script wird von cronjob nicht korrekt ausgeführt - Centos 5

    script wird von cronjob nicht korrekt ausgeführt - Centos 5: Guten Morgen, und hallo ins Forum. Ich habe ein Problem mit meinem Sicherungsserver: ich möchte zur täglichen inkrimentellen Sicherung...