Назад | Перейти на главную страницу

Cron ежедневно запускается дважды

На моем сервере CentOS 7 ошибки, сгенерированные сценарием ночного резервного копирования, который должен был работать нормально, заставили меня проверить свою активность cron. Я обнаружил, что cron.daily запускается дважды - вот соответствующий раздел /var/log/cron после того, как я удалил свой сценарий резервного копирования, чтобы проверить, не вызывает ли он проблему:

Oct 10 02:28:01 mail CROND[1750]: (root) CMD (run-parts /etc/cron.hourly)
Oct 10 02:28:01 mail run-parts(/etc/cron.hourly)[1750]: starting 0anacron
Oct 10 02:28:01 mail anacron[1759]: Anacron started on 2017-10-10
Oct 10 02:28:01 mail run-parts(/etc/cron.hourly)[1761]: finished 0anacron
Oct 10 02:28:01 mail anacron[1759]: Normal exit (0 jobs run)
Oct 10 02:30:01 mail CROND[1766]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 02:40:01 mail CROND[1847]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 02:50:01 mail CROND[1936]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:00:01 mail CROND[2032]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:10:01 mail CROND[2148]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:17:01 mail CROND[2223]: (root) CMD (run-parts /etc/cron.daily)
Oct 10 03:17:01 mail run-parts(/etc/cron.daily)[2223]: starting kizunademo
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2259]: finished kizunademo
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2223]: starting logrotate
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2266]: finished logrotate
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2223]: starting man-db.cron
Oct 10 03:17:02 mail run-parts(/etc/cron.daily)[2277]: finished man-db.cron
Oct 10 03:20:01 mail CROND[2288]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:28:01 mail CROND[2367]: (root) CMD (run-parts /etc/cron.hourly)
Oct 10 03:28:01 mail run-parts(/etc/cron.hourly)[2367]: starting 0anacron
Oct 10 03:28:01 mail anacron[2376]: Anacron started on 2017-10-10
Oct 10 03:28:01 mail run-parts(/etc/cron.hourly)[2378]: finished 0anacron
Oct 10 03:28:01 mail anacron[2376]: Will run job `cron.daily' in 35 min.
Oct 10 03:28:01 mail anacron[2376]: Jobs will be executed sequentially
Oct 10 03:30:01 mail CROND[2381]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:40:01 mail CROND[2462]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 03:50:02 mail CROND[2547]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 04:00:01 mail CROND[2670]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct 10 04:03:01 mail anacron[2376]: Job `cron.daily' started
Oct 10 04:03:01 mail run-parts(/etc/cron.daily)[2685]: starting kizunademo
Oct 10 04:03:02 mail run-parts(/etc/cron.daily)[2721]: finished kizunademo
Oct 10 04:03:02 mail run-parts(/etc/cron.daily)[2685]: starting logrotate
Oct 10 04:03:02 mail run-parts(/etc/cron.daily)[2728]: finished logrotate
Oct 10 04:03:02 mail run-parts(/etc/cron.daily)[2685]: starting man-db.cron
Oct 10 04:03:03 mail run-parts(/etc/cron.daily)[2739]: finished man-db.cron
Oct 10 04:03:03 mail anacron[2376]: Job `cron.daily' terminated
Oct 10 04:03:03 mail anacron[2376]: Normal exit (1 job run)

Почему cron.daily работает дважды? Как видите, журнал содержит некоторые записи, относящиеся ко второму запуску, которых нет при первом запуске: две строки, сообщающие о предстоящем запуске, и еще две строки, говорящие о том, что он завершился обычным завершением. При первом запуске сценарии выполнялись просто без лишних слов. Я предполагаю, что это что-то значит, но я не знаю что.

Я проверил все, что мог придумать, на наличие дубликатов чего-то. Я почти уверен, что читал все похожие темы по этой теме, поэтому сравните со следующим, прежде чем называть это повторяющимся вопросом. На основе Почему cron запускается дважды? Я проверил наличие лишних процессов - полный вывод ps aux | grep cron выглядит следующим образом, поэтому есть только один процесс:

root      9383  0.0  0.2 112672  2340 pts/0    S+   15:18   0:00 grep --color=auto cron
root     25624  0.0  0.0 126248   320 ?        Ss   Sep30   0:02 /usr/sbin/crond -n

На основе Задания Cron выполняются дважды - сервер Ubuntu 12.04 Я также проверил crontab -l -u root, который сказал no crontab for root.

А вот и мой / etc / crontab:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=my@email.com

28 * * * * root run-parts /etc/cron.hourly
17 3 * * * root run-parts /etc/cron.daily
44 2 * * 0 root run-parts /etc/cron.weekly
8 2 7 * * root run-parts /etc/cron.monthly

Мысли?

РЕДАКТИРОВАТЬ (через 9 месяцев после того, как это обсуждение замолкло):

Сегодняшний комментарий Марина Великова заставил меня понять, что существует anacrontab файл (знаю, это глупо, но мне даже в голову не пришло). Вот его содержание:

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

Так вот в чем причина. Но почему система должна быть настроена на запуск обоих? Я предполагаю, что кто-то более умный, чем я, настроил это таким образом, поэтому я не решаюсь испортить это, прежде чем узнаю цель. И если мне действительно нужно избавиться от записей в crontab или anacrontab, какой из них лучше? Anacron, по-видимому, более сложный инструмент, но кажется странным / неправильным опорожнять его. crontab. Я слишком олдскульный?

Почему cron.daily запускается дважды?

crond запускает его один раз:

Oct 10 03:17:01 mail CROND[2223]: (root) CMD (run-parts /etc/cron.daily)

anacron запускает его один раз:

Oct 10 04:03:01 mail anacron[2376]: Job `cron.daily' started

crond началось anacron, поэтому вы не видели процесса для этого:

Oct 10 03:28:01 mail CROND[2367]: (root) CMD (run-parts /etc/cron.hourly)
Oct 10 03:28:01 mail run-parts(/etc/cron.hourly)[2367]: starting 0anacron
Oct 10 03:28:01 mail anacron[2376]: Anacron started on 2017-10-10
Oct 10 03:28:01 mail run-parts(/etc/cron.hourly)[2378]: finished 0anacron
Oct 10 03:28:01 mail anacron[2376]: Will run job `cron.daily' in 35 min.
Oct 10 03:28:01 mail anacron[2376]: Jobs will be executed sequentially

Я только что обнаружил такую ​​же ситуацию на одном из наших серверов. По словам парня, с которым я разговаривал, Anacron предназначен больше для отдельных компьютеров, которые могут быть отключены за ночь, а не для серверов, которые теоретически работают круглосуточно; anacron ищет задания, которые могли быть пропущены, когда машина была выключена. Машина, на которой я это нашел, была сервером типа 24/7, а файл / etc / anacrontab просто (повторно) запускал cron.daily, cron.weekly и cron.monthly. Я удалил anacron с сервера, который, как я обнаружил, делал это, и, надеюсь, это решит проблему.