Cronjob in IST-Zeit einstellen

7

Ich versuche, einen Cronjob-Lauf in einer anderen Zeitzone einzustellen. Ich habe viel gegoogelt und festgestellt, dass das Bearbeiten /etc/default/cronder richtige Weg ist. Aber diese Datei ist veraltet und ich sehe die folgende Meldung, also habe ich sie TZ=ISTin die Datei aufgenommen /etc/init/cron.conf. Ich bin mir nicht sicher, ob dies funktionieren wird. Gibt es Tipps, wie Sie vorankommen können?

# This file has been deprecated. Please add custom options for cron to
# /etc/init/cron.conf and/or /etc/init/cron.override directly. See
# the init(5) man page for more information

Ich verwende cron 3.0pl1-120ubuntu4 unter Ubuntu Linux.

Tesster
quelle

Antworten:

3

ein Cron in einer anderen TZ

Sie können versuchen, die Variable CRON_TZanstelle von festzulegen TZ. Diese Optionen scheinen distro-spezifisch zu sein. Ich habe in den folgenden Manpages nach Fedora und Ubuntu man 5 crontabgesucht (und danach gesucht TZ).

Fedora hat es so, CRON_TZ=ISTwährend Ubuntu es so ausdrückt:

Der Cron-Daemon wird mit einer definierten Zeitzone ausgeführt. Derzeit werden keine Zeitzonen pro Benutzer unterstützt. Alle Aufgaben: Systeme und Benutzer werden basierend auf der konfigurierten Zeitzone ausgeführt. Selbst wenn ein Benutzer die TZ-Umgebungsvariable in seiner Crontab angibt, wirkt sich dies nur auf die in der Crontab ausgeführten Befehle aus, nicht auf die Ausführung der Crontab-Aufgaben selbst.

Fedoras Manpage sagt es so:

Die Variable CRON_TZ gibt die Zeitzone an, die für die Cron-Tabelle spezifisch ist. Der Benutzer sollte eine Zeit gemäß der angegebenen Zeitzone in die Tabelle eingeben. Die zum Schreiben in eine Protokolldatei verwendete Zeit wird der lokalen Zeitzone entnommen, in der der Dämon ausgeführt wird.

Angesichts der Tatsache, dass Sie unter Ubuntu arbeiten, erwarte ich nicht, dass dies funktioniert, aber es könnte sein. Ich habe Ubuntu 12.10 überprüft.

Versuchen Sie so etwas:

#m  h           d   m   wday    command
CRON_TZ=IST
5   0,6,12,18   *   *   *       /path/to/script.bash

Alle Cron in einer anderen TZ

Wenn Sie jedoch alle Ihre Cron in einer anderen Zeitzone ausführen möchten, können Sie die dramatischere Taktik anwenden, TZum den Cron-Daemon selbst zu ändern . So etwas im Stop / Start-Skript:

# /etc/init.d/crond
...
...
# Source function library.
. /etc/rc.d/init.d/functions

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

export TZ=IST
start() {
    if [ $UID -ne 0 ] ; then
        echo "User has insufficient privilege."
        exit 4
    fi
    [ -x $exec ] || exit 5
    [ -f $config ] || exit 6
    echo -n $"Starting $prog: "
    daemon $prog $CRONDARGS
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
}
...
...

Dies ist Code aus meinem Fedora Crond Stop / Start-Skript, aber eine ähnliche Änderung könnte an Ihrem Ubuntu Stop / Start-Skript für Crond vorgenommen werden.

slm
quelle
@sim - in welcher Datei soll ich das hinzufügen?
Tesster
Dies ist ein Crontab-Eintrag, also so etwas wie /etc/crontab.
slm
Ich habe "crontab -e" gemacht und CRON_TZ = IST hinzugefügt ... es hat nicht funktioniert :-(
tesster
3
@tesster - ja, da es Ubuntu ist, war es eine Strecke. Ich denke, Sie haben nur die Möglichkeit, die TZ für die gesamte Crond einzustellen.
slm
0

Es sollte keine Rolle spielen, aber versuchen Sie, die Zeichenfolge "IST" in Anführungszeichen zu setzen.

In cron.confoder /etc/default/cron:

export TZ='IST'

Versuchen Sie auch, anstelle des Kurznamens den Langnamen zu verwenden:

export TZ='Asia/Kolkata'

Oder legen Sie dies in Ihre, ~/.profilewenn Sie Crontabs machen

export TZ='Asia/Kolkata'

Nachdem Sie Änderungen an der Konfigurationsdatei dieses Dämons vorgenommen haben, müssen Sie ihn neu starten:

service cron restart
h3rrmiller
quelle
cron.confin Ubuntu sieht aus wie eine systemd-Datei. Sind Sie sicher, dass wir sie hinzufügen exportkönnen? Ich möchte `CRONDARGS =" - s -m off "` setzen, um Mail (und Log) zu vermeiden, kann aber in Ubuntu nicht finden, wie das geht.
Bindestrich
Auch wenn /etc/default/crones sich um ein veraltetes Hinzufügen handelt CRONDARGS="-s -m off", funktioniert das Hinzufügen (vorerst), da es aus Quellen stammt /etc/init.d/cron. /etc/init/cron.confist eine systemd-Konfigurationsdatei und exportkann dort funktionieren oder nicht, aber ich konnte nicht finden, ob dies der Fall ist.
Bindestrich
Es ist veraltet, weil dieser Thread über 3 Jahre alt ist. Die Dinge haben sich geändert
h3rrmiller
Ja und immer noch auf Ubuntu 16.04 scheint es die einzige Option zu sein, die eingestellt werden sollCRONDARGS
schneidig
Was für einen Benutzer, der vor 3 Jahren eine Frage gestellt hat, irrelevant wäre. Keine Nekro-Threads, es sei denn, es gibt einen guten Grund dafür.
h3rrmiller