我想设置 yum 使用 yum-cron 自动更新系统。但我的互联网连接非常有限,我不希望更新过程占用一小部分可用的互联网,并使网络上每个人的计算机使用都很痛苦。
如何设置 yum 自动检查和下载更新,但仅限凌晨 2 点到 6 点之间?
答案1
答案2
这是一个简短的答案。以 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
详细解释如下。
有几个实用程序可用于在 Unix 系统上运行计划作业:
该cron
实用程序是用于执行计划任务的事实标准 Unix 实用程序。其缺点之一cron
是,如果系统因某种原因宕机,任务可能无法执行
该anacron
实用程序是针对主机系统可能无法持续运行的用例而创建的:
纳克朗是一个执行定期命令调度的计算机程序,这传统上由 cron 完成,但不假设系统正在连续运行。
该fcron
实用程序是一个较新的版本,也旨在处理这种情况:
氟龙是一个执行周期性命令调度的计算机程序。 [fcron] 不假设系统是连续运行的,并且可以在不始终或定期运行的系统中运行。它的目标是用一个集成程序取代 Vixie-cron 和 Anacron,提供原始 Cron 守护进程缺少的许多功能。
该hcron
实用程序是一个功能更加丰富的替代方案:
赫克伦[带来一些新的东西]以许多真正有用和实用的方式。例如:
- 事件单独存储,每个事件都存储在自己的文件中,而不是全部存储在单个文件中
- 事件在文件系统中分层组织,而不是作为单个文件中的表
- 事件已命名且可引用
- 事件被定义为多个 key=value 设置,而不是单行上的有序列
- 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
cron 守护进程每分钟运行一次,并检查所有活动的 cron 作业,以查看是否有任何作业具有与当前时间匹配的模式。例如,要在凌晨 2:00 运行作业,您希望分钟值为 0,小时值为 2,并且不限制日期、月份和星期几的值。这将表示如下:
0 2 * * * command
该语法可能需要一些时间来适应,因此这里有一个基于 Web 的实用程序,它将帮助您生成 cron 作业表达式:
这是另一个您可能会觉得有用的基于网络的工具:
它的作用恰恰相反——它允许您输入时间模式并以英语显示。
有多种不同的方法来部署 cron 作业。有一个主 crontab 文件和其中的几个子目录/etc/
用于系统 cron 作业:
/etc/crontab
/etc/cron.d
/etc/cron.daily
/etc/cron.deny
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
有关这方面的更多信息,请参阅 CentOS 部署指南中的相关部分:
最简单的事情可能是将 crontab 文件添加到/etc/crontab.d
目录中,例如
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
您可能需要将 MAILTO 变量设置为您的首选管理电子邮件地址,以便在作业失败时通知您。
您还应该意识到,cronjobs 运行在与您的用户不同的环境中,这是一个常见的问题和挫败感的根源。例如,请参阅以下帖子: