web-dev-qa-db-ja.com

毎日2回実行されているcron

CentOS 7サーバーでは、正常に実行されるはずの夜間バックアップスクリプトによって生成されたエラーにより、cronアクティビティを確認しました。 cron.dailyが2回実行されていることを発見しました。バックアップスクリプトを削除して、何らかの理由で問題が発生していないかどうかを確認した後、/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が2回実行されるのはなぜですか?ご覧のとおり、ログには、最初の実行には存在しない2番目の実行に関連するいくつかのエントリが含まれています。次の実行を通知する2行と、通常の終了で終了したことを示す2行です。最初の実行では、余分なファンファーレなしでスクリプトを実行するだけでした。それは何か意味があると思いますが、何がわかりません。

私は考えられるすべてのものをチェックして、何かの2倍を探しました。私はこの主題に関する同様のスレッドをすべて読んだと確信しているので、これを重複した質問と呼ぶ前に、以下と比較してください。 cronが2回実行されるのはなぜですか? 追加のプロセスを確認しました-ps aux | grep cronの完全な出力は次のとおりなので、プロセスは1つだけです。

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ジョブが2回実行されている-Ubuntuサーバー12.04crontab -l -u rootもチェックしました。これはno crontab for rootと言っています。

そして、これが私の/ etc/crontabです。

Shell=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
[email protected]

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ヶ月後):

今日のMarinVelikovからのコメントにより、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を空にするのは奇妙/間違っているようです。私はあまりにも古い学校ですか?

2
OsakaWebbie

Cron.dailyが2回実行されているのはなぜですか?

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

crondanacronを開始しました。そのため、プロセスが表示されませんでした。

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
2
yoonix

私はちょうど私たちのサーバーの1つでこれと同じ状況を見つけました。私が話をした人によると、anacronは、理論的には24時間年中無休で稼働しているサーバーではなく、夜間に電源が切れる可能性のある個々のPCを対象としています。 anacronは、マシンの電源がオフになっているときに見逃された可能性のあるジョブを探します。私がこれを見つけたマシンは24時間年中無休のタイプのサーバーであり、/ etc/anacrontabファイルはcron.daily、cron.weekly、およびcron.monthlyを(再)実行していました。これを行っていることがわかったサーバーからanacronを削除しましたが、これで解決することを願っています。

1
Sean Read