首页 > 其他分享 >Cron

Cron

时间:2023-06-06 16:33:57浏览次数:39  
标签:cron 文件 作业 用户 crontab Cron etc

cron 命令行实用程序是类 Unix 操作系统上的作业调度程序。设置和维护软件环境的用户使用 cron 来调度作业[1](命令或 shell 脚本),也称为 cron 作业,[2][3] 以固定的时间、日期或间隔定期运行。[4] 它通常自动化系统维护或管理——尽管它的通用性质使其可用于从 Internet 下载文件和定期下载电子邮件等操作。[5]

Cron 最适合调度重复性任务。可以使用关联的 at 实用程序完成计划一次性任务。

克朗的名字起源于chronos,希腊语中时间的意思。[6][需要更好的来源]

概述[编辑]

cron 的操作由 crontab(cron 表)文件驱动,该文件指定按给定计划定期运行的 shell 命令。crontab 文件存储在保存作业列表和 cron 守护程序的其他指令的位置。用户可以拥有自己的个人crontab文件,并且通常有一个系统范围的crontab文件(通常在例如的子目录中),只有系统管理员可以编辑。/etc/etc/etc/cron.d

crontab 文件的每一行代表一个作业,如下所示:

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>

每行的语法都需要一个由五个字段组成的 cron 表达式,这些字段表示执行命令的时间,后跟要执行的 shell 命令。

虽然通常当时间/日期规范字段都与当前时间和日期匹配时执行作业,但有一个例外:如果“月份中的某天”(字段 3)和“星期几”(字段 5)都受到限制(不包含“*”),则一个或两个必须与当前日期匹配。[注7]

例如,假设 cron 用户的默认 shell 符合 Bourne shell,则在每天午夜 (00:01) 过后一分钟清除 Apache 错误日志:

1 0 * * * printf "" > /var/log/apache/error_log

此示例在每个星期六的 23:45(晚上 11:45)运行名为 export_dump.sh 的 shell 程序。

45 23 * * 6 /home/oracle/scripts/export_dump.sh

注意:在某些系统上,还可以指定每隔 n 个时间间隔运行一次。此外,可以使用逗号指定多个特定时间间隔(例如,)。下面的将每隔 5 分钟向命令行输出“hello world”,每个第一个、第二个和第三个小时(即,01:00、01:05、01:10,直到 03:55)。*/n1,2,3

*/5 1,2,3 * * * echo hello world

无论实际实现将此文件存储在何处,都可以通过调用来编辑用户的配置文件。crontab -e

一些实现,例如由Paul Vixie编写并包含在许多Linux发行版中的流行的第4个BSD版本,添加了第六个字段:运行指定作业的帐户用户名(取决于用户是否存在和权限)。这仅在系统 crontab 中是允许的,在其他 crontab 中不允许,每个 crontab 都分配给单个用户进行配置。第六个字段有时用于年份而不是帐户用户名 - 适用于 Windows 的 nncron 守护程序执行此操作。cron

cron 的 Amazon EventBridge 实现不使用基于 0 的星期几,而是使用 1-7 SUN-SAT(而不是 0-6),并支持其他表达式功能,例如第一个工作日和每月的最后一天。[8]

非标准预定义调度定义[编辑]

一些 cron 实现[9] 支持以下非标准宏:

进入 描述 相当于
@yearly(或@annually) 每年1月<>日午夜运行一次 0 0 1 1 *
@monthly 每月在每月第一天的午夜运行一次 0 0 1 * *
@weekly 每周一次,周日上午午夜运行 0 0 * * 0
@daily(或@midnight) 每天午夜运行一次 0 0 * * *
@hourly 每小时运行一次 0 * * * *
@reboot 启动时运行

@reboot将作业配置为在守护程序启动时运行一次。由于 cron 通常永远不会重新启动,因此这通常对应于正在引导的计算机。这种行为在某些 cron 变体中是强制执行的,例如 Debian 中提供的变体,[10] 因此简单地重新启动守护进程不会重新运行作业。@reboot

@reboot如果需要在特定用户下启动服务器或守护程序,并且用户无权配置 init 以启动程序,则可能很有用。

Cron 权限[编辑]

这两个文件起着重要作用:

  • /etc/cron.allow - 如果此文件存在,它必须包含该用户的名称才能允许使用 cron 作业。
  • /etc/cron.deny - 如果 cron.allow 文件不存在,但 /etc/cron.deny 文件确实存在,那么要使用 cron 作业,用户不得列在 /etc/cron.deny 文件中。

请注意,如果这些文件都不存在,则根据与站点相关的配置参数,要么只有超级用户可以使用 cron 作业,要么所有用户都可以使用 cron 作业。

时区处理[编辑]

大多数 cron 实现只是解释运行 cron 守护程序的系统时区设置中的 crontab 条目。如果大型多用户计算机的用户位于多个时区,这可能会引起争议,尤其是在系统默认时区包含可能令人困惑的 DST 时。因此,cron 实现可以作为特殊情况识别用户 crontab 中“CRON_TZ=<时区>”形式的行,解释相对于该时区的后续 crontab 条目。[注11]

标签:cron,文件,作业,用户,crontab,Cron,etc
From: https://www.cnblogs.com/clark1990/p/17460926.html

相关文章

  • Kubernetes(k8s)定时任务:CronJob
    目录一.系统环境二.前言三.KubernetesCronJob简介四.kubernetesCronJob和Linuxcrontab对比五.CronJob表达式语法六.创建CronJob定时任务七.创建具有超时时间的CronJob定时任务八.总结一.系统环境本文主要基于Kubernetes1.21.9和Linux操作系统CentOS7.4。服务器版本docke......
  • 手电_耐朗-NICRON-H30F_说明书
    头戴式手电耐朗NicronH30F说明书900流明18650-USB-3.6V-3400mAh-带保护板......
  • Cron 定时任务 时间设置
    CronTriggerCronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表。CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五......
  • Ansible系统-模块-cron学习整理
    1、常规性用法ansibletest-xxxx-01-vm-mcron-a'minute=30hour=15name="ansiblecrontabdemo"job="bash/tmp/1.sh"'默认是写到 root 用户的crontab中去,可以通过如下两种方式查看写入结果1)登录到目标主机,切换到对应的用户执行如下命令crontab-l-uusername比如上面的......
  • 定时crontab执行数据库备份不起作用,手动运行起作用的问题
    用crontab定时任务去执行mysqldump,定时备份数据库,手动是可以执行的。如下图,生成了备份文件。但是,用crontab去执行这个back.sh脚本的话,是不会生成备份文件的,起初怀疑crontab没有执行。查看crontab日志 cat  /var/log/cron发现,是执行了的注意,crontab执行出错的信息,不会......
  • 手电_耐朗-NICRON-B74_说明书
    手电耐朗NICRONB74说明书600流明可90°弯折145003.7V锂电池......
  • crontab编辑过后保存退出
    (51条消息)crontab-e编辑之后如何保存并退出(Ubuntu)_crontab编辑保存退出_三问静先生的博客-CSDN博客......
  • crontab工具使用介绍
    在Linux系统中,我们可以通过crontab工具来执行定时任务。它可以帮助我们在特定的时间间隔内执行特定的命令或程序,这对于自动化运维、备份或数据处理等任务非常有帮助。使用crontab工具需要了解以下几个部分:1.crontab格式crontab格式由6个字段组成,它们分别是:分钟(0-59)小......
  • 【Java】定时器CronExpression参数规则
    参考:定时器CronExpression配置说明详解-心和梦的方向-博客园(cnblogs.com) 项目中经常要使用到定时器,其中CronExpression配置非常重要。现在就配置说明详细解说一下:CronExpression表达式是由6个必需字段(秒、分、时、日、月、周)和一个可选字段(年)通过空格组成。cronExpres......
  • CronTrigger时间配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年]
    CronTrigger配置格式:格式:[秒][分][小时][日][月][周][年]序号说明是否必填允许填写的值允许的通配符1秒是0-59,-*/2分是0-59,-*/3小时是0-23,-*/4日是1-31,-*?/LW5月是1-12orJAN-DEC,-*......