crond als Shellskript

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von kmh, 29.05.2006.

  1. kmh

    kmh Grünschnabel

    Dabei seit:
    29.05.2006
    Beiträge:
    2
    Zustimmungen:
    0
    Ich habe ein Shellskript gefunden, das "crond" emuliert.

    Code:
    #!/bin/sh
    
    # crond replacement
    
    CRONTAB=/var/etc/crontab
    # crontab format
    # +---------minute         00-59
    # | +-------hour           00-23
    # | | +-----day of month   01-31
    # | | | +---month          01-12 
    # | | | | +-day of week    1-7 
    # | | | | |                                                              
    # * * * * * command
    
    while true
    do
      remain=$(date +%S|sed 's/^0//')
      sleep $((60-remain))
      set $(date '+%M %H %d %m %w')
      while read minute hour day month wday command
      do
        runit=""
        if [ "${minute###}" != "$minute" ] 
        then
          continue
        fi 
        [ "$minute" = "$1" ] || [ "$minute" = "*" ] && runit=$runit"M"
        [ "$hour" = "$2" ] || [ "$hour" = "*" ] && runit=$runit"H"
        [ "$day" = "$3" ] || [ "$day" = "*" ] && runit=$runit"d"
        [ "$month" = "$4" ] || [ "$month" = "*" ] && runit=$runit"m"
        [ "$wday" = "$5" ] || [ "$wday" = "*" ] && runit=$runit"w"
        if [ "$runit" = "MHdmw" ]
        then
          log="/tmp/log-$(date +%Y%m%d)"
          echo "$(date) running $command" >> $log
          $command >>$log 2>&1 &
        fi 
      done < $CRONTAB
    done 
    
    
    Der Punkt, indem ich beim Verständnis nicht weiterkomme, ist folgende Passage:

    Code:
        if [ "${minute###}" != "$minute" ] 
        then
          continue
        fi 
    
    Vor allem die Variable minute### ist mir suspekt ??
    Ich würde mich sehr freuen wenn mir das jemand erklären könnte - bin leider noch kein Skript-Profi.
     
  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. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Code:
    if [ "${minute###}" != "$minute" ]
    
    Ein bzw. zwei Doppelkreuze sind Modifizierer fuer Bash. Es interpretiert die nachfolgenden Zeichen als regulaeren Ausdruck ('pattern') und entfernt das laengstmoegliche Muster, das mit '$minute' ab Beginn uebereinstimmt.

    In diesem Fall ueberprueft es, ob '$minute' selber mit einem Doppelkreuz beginnt und entfernt ihn dann. Falls also der Pruefausdruck mit einem Doppelkreuz beginnt, so wird die Zeile als Kommentar interpretiert und uebersrpungen. Man haette auch schreiben koennen
    Code:
    if [ "${minute#'#'}" != "$minute" ]
    
    Dann waere wohl deutlicher geworden, dass das erste Kreuz ein Operator ist und das zweite ein Operand. Ohne die einf. Anfuehrungszeichen werden beide Kreuz als ein Operand interpretiert.

    S. a. 'info bash' mit Suche nach '##'
     
  4. kmh

    kmh Grünschnabel

    Dabei seit:
    29.05.2006
    Beiträge:
    2
    Zustimmungen:
    0
    Danke für die Erklärung - jetzt verstehe ich es.
    (Ich habe auch noch in 'info bash' nachgelesen, da steht es auch nochmal schön beschrieben.)
    :))
     
Thema:

crond als Shellskript

Die Seite wird geladen...

crond als Shellskript - Ähnliche Themen

  1. Reihenfolge der crond Syslog einträge

    Reihenfolge der crond Syslog einträge: Hallo, bin an einer Fehlersuche dran und stell mir gerade folgende Frage. Was ist eigentlich zuerst da? Ein cron Logeintrag unter /var/log/cron...
  2. Syscp Crond (cronscript) probleme

    Syscp Crond (cronscript) probleme: Ich hab bei mir auf meinem Server Syscp installiert. Nun hab ich nach 5 neu Instalationen wegen eines Mysqldatenbank Sokel Fehler. Nun hab ich...
  3. crond: automatischer Shutdown

    crond: automatischer Shutdown: Hallo zusammen! Wie schaffe ich es, dass mein crond den Rechner automatisch Montags bis Freitags um 2:30 (AM) ausschaltet? Grüße, Moritz
  4. Wie einen Pfad zur Vereinfachung mittels Shellskript wechseln

    Wie einen Pfad zur Vereinfachung mittels Shellskript wechseln: Ich muß häufiger in 2 bestimmte Verzeichnisse auf 3. oder 4. Ebene wechseln. Um nicht permanent cd /ordnerA/ordnerB/ordnerC... usw eingeben zu...
  5. Shellskript per PHP aufrufen funktioniert nicht

    Shellskript per PHP aufrufen funktioniert nicht: Hallo zusammen, ihr seid meine letze Hoffnung, seit heute morgen versuche ich ein shellskript zum laufen zu bekommen. Folgende...