AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 877721
Accepted
OsakaWebbie
OsakaWebbie
Asked: 2017-10-10 22:32:46 +0800 CST2017-10-10 22:32:46 +0800 CST 2017-10-10 22:32:46 +0800 CST

Cron 每天运行两次

  • 772

在我的 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
[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 个月后):

今天来自 Marin Velikov 的评论让我意识到有一个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
  • 2 2 个回答
  • 2361 Views

2 个回答

  • Voted
  1. Best Answer
    user143703
    2017-10-10T22:55:59+08:002017-10-10T22:55:59+08:00

    为什么 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
    
    • 3
  2. Sean Read
    2019-12-10T12:55:13+08:002019-12-10T12:55:13+08:00

    我刚刚在我们的一台服务器上发现了同样的情况。据我交谈过的人说,anacron 更适用于可能在一夜之间断电的个人电脑,而不是理论上 24/7 运行的服务器;anacron 查找在机器关闭时可能丢失的作业。我发现它的机器是 24/7 类型的服务器,而 /etc/anacrontab 文件只是(重新)运行 cron.daily、cron.weekly 和 cron.monthly。我从我发现正在执行此操作的服务器中删除了 anacron,希望这能解决它。

    • 2

相关问题

  • 每 4 小时运行一次 cron 的正确语法是什么?[复制]

  • 用于 mysql 数据库清理和备份的 crontab

  • Windows cron 作业

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • crontab ifconfig 什么都不输出

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve