好吧,如果是我,我会设置root一个每天凌晨 2 点开始的 cron 作业(为)。像这样:
0 2 * * * /bin/yum -y update
Run Code Online (Sandbox Code Playgroud)
它几乎是可以得到的KISS!
这是一个简短的答案。以 root 用户身份运行以下命令:
cat <<HEREDOC > /etc/crontab.d/update-yum.crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
0 2 * * * yum -y update
HEREDOC
Run Code Online (Sandbox Code Playgroud)
详细说明如下。
有几个用于在 Unix 系统上运行预定作业的实用程序:
该cron实用程序是用于执行计划任务的事实上的标准 Unix 实用程序。的一个缺点cron是,如果系统由于某种原因停机,则可能无法执行任务
该anacron实用程序是为主机系统可能无法持续运行的用例而创建的:
anacron是一个执行周期性命令调度的计算机程序,传统上由 cron 完成,但不假设系统连续运行。
该fcron实用程序是一个较新的版本,也旨在处理这种情况:
fcron是一个计算机程序 [...] 执行定期命令调度。[fcron] 不假设系统是连续运行的,可以在不一直运行或不定时运行的系统中运行。它旨在用单个集成程序替换 Vixie-cron 和 Anacron,提供原始 Cron 守护程序所缺少的许多功能。
该hcron实用程序是一个功能更加丰富的替代方案:
hcron [带来了一些新的东西] 以许多非常有用和实用的方式。例如:
- 事件单独存储,每个都存储在自己的文件中,而不是全部存储在单个文件中
- 事件在文件系统中分层组织,而不是作为单个文件中的表
- 事件已命名且可引用
- 事件被定义为多个键=值设置,而不是单行上的有序列
- hcron 是面向网络的而不是面向系统的
- 支持模板事件以减少和重用设置
- 如果无法产生事件,则支持故障转移事件
- 支持设置和使用变量
如果您不需要任何其他变体的附加功能,那么最简单的使用方法是cron. 典型的工作流程cron是为给定的任务创建一个所谓的 cron 作业,它由一个要运行的命令和一个指定何时运行它的模式组成。时间模式的语法如下所示:
# ?????????????? minute (0 - 59)
# ? ?????????????? hour (0 - 23)
# ? ? ?????????????? day of month (1 - 31)
# ? ? ? ?????????????? month (1 - 12)
# ? ? ? ? ?????????????? day of week (0 - 6) (Sunday to Saturday;
# ? ? ? ? ? 7 is also Sunday on some systems)
# ? ? ? ? ?
# ? ? ? ? ?
# * * * * * command to execute
Run Code Online (Sandbox Code Playgroud)
cron 守护进程每分钟运行一次,并检查所有活动的 cron 作业以查看是否有任何作业具有与当前时间匹配的模式。例如,要在凌晨 2:00 运行作业,您可能希望分钟值为 0,小时值为 2,并且月中的某天、月份和星期几的值不受限制。这将表示如下:
0 2 * * * command
Run Code Online (Sandbox Code Playgroud)
语法可能需要一点时间来适应,所以这里有一个基于 Web 的实用程序,它将帮助您生成 cron 作业表达式:
这是您可能会发现有用的另一个基于 Web 的工具:
它反过来——它允许您输入时间模式并以英文显示。
有几种不同的方式来部署 cron 作业。有一个主 crontab 文件和几个子目录,/etc/用于系统 cron 作业:
/etc/crontab
/etc/cron.d
/etc/cron.daily
/etc/cron.deny
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
Run Code Online (Sandbox Code Playgroud)
例如,有关这方面的更多信息,请参阅 CentOS 部署指南中的相关部分:
最简单的方法可能是将 crontab 文件添加到/etc/crontab.d目录中,例如
# ?????????????? minute (0 - 59)
# ? ?????????????? hour (0 - 23)
# ? ? ?????????????? day of month (1 - 31)
# ? ? ? ?????????????? month (1 - 12)
# ? ? ? ? ?????????????? day of week (0 - 6) (Sunday to Saturday;
# ? ? ? ? ? 7 is also Sunday on some systems)
# ? ? ? ? ?
# ? ? ? ? ?
# * * * * * command to execute
Run Code Online (Sandbox Code Playgroud)
您可能希望将 MAILTO 变量设置为您首选的管理电子邮件地址,以便在作业失败时通知您。
您还应该意识到,cronjobs 在与您的用户不同的环境中运行,这是一个常见的问题和沮丧的根源。例如,请参阅以下帖子:
| 归档时间: |
|
| 查看次数: |
7636 次 |
| 最近记录: |