Anleitungen im Zusammenhang mit Beach

Wie man einen Cron-Job ausführt

Du kannst deine eigenen Skripte in einer Instanz ausführen: jede Stunde, jeden Tag oder wann du willst.

Übersicht

Beach unterstützt benutzerdefinierte Cronjob-Skripte für ausgewählte Instanztypen. Cron-Jobs werden jede Stunde ausgeführt. Wenn du ein Skript nur zu bestimmten Zeiten ausführen möchtest, z. B. jede Nacht um 3:00 Uhr, kannst du eine einfache Bedingung zu deinem Skript hinzufügen.

Die Details

Erstelle einfach eine Datei namens beach-cron-hourly .sh, lege sie im Hauptverzeichnis deines Projekts ab und setze sie ein.

Das folgende Skript enthält eigentlich zwei Jobs:

  • der erste Job wird jeden Ersten des Monats nach Mitternacht ausgeführt und beendet einen "Abrechnungszeitraum" für die Abrechnung
  • der zweite Job wird jeden Tag um 22 Uhr ausgeführt und registriert einige Speicherprotokolle
#!/bin/bash

CURRENT_DATE=`date +"%Y-%m-%d"`
CURRENT_DATE_ALT=`date +"%y-%m-%d"`
CURRENT_TIME=`date +"%H:%M:%S"`
CURRENT_DAY=`date +"%d"`
CURRENT_HOUR=`date +"%H"`
YESTERDAY_DATE=`date -ud"${CURRENT_DATE} -1 days" +"%d.%m.%Y"`

if [ "${CURRENT_DAY}" == "01" ] && [ "${CURRENT_HOUR}" == "00" ] ; then
    echo "${CURRENT_DATE_ALT} ${CURRENT_TIME}          INFO        Beach Cron Job       Ending settlement period per ${YESTERDAY_DATE}" >> /application/Data/Logs/System.log
    /application/flow billing:endsettlementperiod --cutoffDate ${YESTERDAY_DATE}
fi

if [ "${CURRENT_HOUR}" == "22" ] ; then
    echo "${CURRENT_DATE_ALT} ${CURRENT_TIME}          INFO        Beach Cron Job       Queuing registration of storage logs of instance buckets" >> /application/Data/Logs/System.log
    /application/flow storage:registerstoragelogs
fi

Dein Cronjob-Skript wird jede Stunde aufgerufen. Allerdings ist es nicht immer sicher, welche Minute das ist. Meistens wird es eine Viertelstunde nach der vollen Stunde ausgeführt - aber verlass dich nicht darauf.

Wenn du deine Instanz genau zu dem Zeitpunkt bereitstellst, zu dem der Cron-Job ausgeführt wird, kann es sein, dass dein Skript unterbrochen oder gar nicht erst aufgerufen wird. Das ist zwar nur ein sehr kurzes Zeitfenster und daher unwahrscheinlich, aber du solltest darauf vorbereitet sein.