Как измениться, время cron.daily выполняется в Linux

По моему опыту, файл все еще сохранен, но это может быть в непоследовательном состоянии. Это - то, если Вы создали резервную копию байтов 1-100, и затем что-то изменило байты 80-120, когда tar создает резервную копию 101-200, у Вас есть только половина изменения в резервном копировании. Скорее всего, с текстовыми файлами и файлами журнала, это - что-то добавленное в конец файла, таким образом, Вы ничего на самом деле не теряете.

21
задан 6 August 2010 в 02:09
7 ответов

В 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.

23
ответ дан 2 December 2019 в 20:05

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

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

grep -R cron.daily /etc

Затем возьмите его оттуда.

0
ответ дан 2 December 2019 в 20:05

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

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

00 10 * * * / path / to / script

-1
ответ дан 2 December 2019 в 20:05

В 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
1
ответ дан 2 December 2019 в 20:05

в 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
3
ответ дан 2 December 2019 в 20:05

Ubuntu 19.10 (и, возможно, более ранние версии) использует таймер systemd для запуска anacron.

Решение

Способ изменить время выполнения анакрона с помощью этой команды:

sudo systemctl edit --full anacron.timer

Затем измените строку:

OnCalendar=*-*-* 07..23:30

Что не работает

Редактирование /и т. д. /crontab не помогает.

25 7    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Часть перед оператором || только проверяет, установлен ли анакрон, она ничего не выполняет. И часть после выполняется только в том случае, если предыдущая часть не завершилась успешно (ленивая оценка оператора), что тогда будет означать, что anacron не установлен.

Редактирование /etc/cron.d/anacron тоже не помогает.

30 7-23 * * *   root    [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi

Условие если [ ! -d /run/systemd/system ] предотвращает запуск скрипта, когда установлен systemd.

Правильный способ изменить время выполнения — отредактировать таймер systemd, как описано в начале.

1
ответ дан 20 June 2020 в 07:01

То, что сказала Джослин, было правильным. Однако в примере ниже. Если вы измените || на &&, все должно работать нормально.

# m h dom mon dow user  command
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 )
#
0
ответ дан 25 July 2021 в 18:53

Теги

Похожие вопросы