So ändern Sie die Uhrzeit cron.daily wird unter Linux ausgeführt


22

Ich habe ein Skript in cron.daily, das jeden Morgen zu einer bestimmten Zeit ausgeführt wird. Ich muss die Uhrzeit ändern, zu der es ausgeführt wird.

Wie ändere ich die Zeit, zu der cron.daily die Skripte ausführt?

linux  cron  redhat 

Antworten:


24

Bei Red Hat 5 oder älter wird dies in gesteuert /etc/crontab.

Neuere Versionen verwenden /etc/anacrontab. Standardmäßig werden cron.dailySkripte um 4:02 Uhr ausgeführt. Durch Bearbeiten /etc/crontabwird diese Zeit geändert.

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Auf Debian / Ubuntu-Systemen wird dies ebenfalls gesteuert /etc/crontab.

Beispielsweise; eine Ubuntu 12.04 Standardinstallation:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

In beiden Fällen finden Sie hier weitere Informationen zur zu verwendenden Syntax: http://linux.die.net/man/5/crontab oder man 5 crontabauf nahezu jedem Linux-System.


3
Vergiss nicht zu spielen, sudo systemctl restart cron.servicenachdem du dies geändert hast. Dies gilt für systemd-basierte Systeme wie das moderne Debian und Ubuntu.
TranslucentCloud

3

in RHEL / CentOS 6 und höher

# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily

7       25      cron.weekly             nice run-parts /etc/cron.weekly

@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Um die Frage zu beantworten, wie die Laufzeit geändert werden soll, muss die START_HOURS_RANGE bearbeitet werden. Richtig?
21.

1

Unter openSUSE sieht die Crontab folgendermaßen aus:

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1

Der run-cronsBefehl überprüft /var/spool/cron/lastrununter anderem die Zeitstempel der Dateien . Wenn die Zeit seit der letzten Ausführung abgelaufen ist, wird die Cron-Datei erneut ausgeführt.

Die Zeit kann durch Berühren der Datei beeinflusst werden. Zum Beispiel, um es auf 2012-11-17 03:15 zu setzen:

touch -t 201211140315 /var/spool/cron/lastrun/cron.daily

0

Wenn die Leitung nicht da wäre, würde dies nichts lösen.

Versuchen Sie herauszufinden, wo cron.daily erwähnt wird, mit

grep -R cron.daily /etc

Dann nimm es von dort.


Sie müssen sehr vorsichtig sein, wenn Sie diesen Befehl verwenden. Zum Beispiel für mein RedHat gibt es / etc / crontab und / etc / anacrontab Dateien zurück. Und wenn Sie Zeilen mit cron.daily entry entfernen, deaktivieren Sie einfach die Ausführung aller Skripte, die täglich ausgeführt werden sollen (für mich sind es logrotate, tmpwatch, cups und so weiter).
Lukasz Stelmach

2
Ich habe nicht vorgeschlagen, die Zeile zu entfernen. Die Frage war, wo die Zeit für cron.daily geändert werden soll. Dies ist, wie Sie es finden (so war dies eher eine "Hilfe zur Selbsthilfe" Art der Antwort)

-1

Sie möchten zwei Dinge tun:

  1. Entfernen Sie das Skript aus cron.daily und fügen Sie es an einer anderen Stelle ein.
  2. Fügen Sie Ihrer crontab einen Eintrag hinzu, um das angegebene Skript zur angegebenen Zeit auszuführen:

00 10 * * * /path/to/script

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.