Как изменить время запуска cron.daily в linux

22

У меня есть скрипт в cron.daily, который запускается в определенное время каждое утро. Мне нужно изменить время его запуска.

Как мне изменить время запуска скриптов cron.daily?


источник

Ответы:

24

На Red Hat 5 или старше это контролируется в /etc/crontab.

Более новые версии используют /etc/anacrontab. По умолчанию cron.dailyскрипты запускаются в 4:02. Редактирование /etc/crontabизменит это время.

# 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

В системах Debian / Ubuntu это также контролируется /etc/crontab.

Например; установка Ubuntu 12.04 по умолчанию:

# /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 )
#

И в любом случае, вы можете найти более подробную информацию о том, какой синтаксис использовать здесь: http://linux.die.net/man/5/crontab или работать man 5 crontabпрактически на любой системе Linux.

ewwhite
источник
3
Не забудьте выполнить sudo systemctl restart cron.serviceпосле того, как вы изменили это. Это верно для systemdсистем на основе, таких как современные Debian и Ubuntu.
TranslucentCloud,
3

в RHEL / CentOS 6 и выше

# /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
Мохамед Ахмед Беша
источник
Итак, чтобы ответить на вопрос, как изменить время запуска, мне нужно отредактировать START_HOURS_RANGE, правильно?
thelr
1

На openSUSE crontab выглядит так:

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

Команда run-cronsпроверяет временные метки файлов /var/spool/cron/lastrunсреди прочего. Когда время с момента последнего выполнения истекло, он снова запустит файл cron.

На время можно повлиять, коснувшись файла. Например, чтобы установить его на 2012-11-17 03:15:

touch -t 201211140315 /var/spool/cron/lastrun/cron.daily
vdboor
источник
0

Если линии не было, это ничего не решит.

Попробуйте найти, где упоминается cron.daily, с

grep -R cron.daily /etc

Тогда возьми это оттуда.

MVDS
источник
Вы должны быть очень осторожны, если используете эти команды. Например, для моего RedHat он возвращает файлы / etc / crontab и / etc / anacrontab. И если вы удаляете строки с записью cron.daily, вы просто отключаете выполнение всех скриптов, которые должны запускаться ежедневно (для меня это logrotate, tmpwatch, cups и так далее).
Лукаш Стельмах
2
Я не предлагал убрать строку, вопрос был в том, где изменить время cron.daily. Вот как вы его
-1

Вы хотите сделать две вещи:

  1. Удалите скрипт из cron.daily и вставьте куда-нибудь еще.
  2. Добавьте запись в ваш crontab, чтобы запустить указанный скрипт в указанное время:

00 10 * * * /path/to/script


источник