如何安排 yum 自动更新仅在夜间运行?

如何安排 yum 自动更新仅在夜间运行?

我想设置 yum 使用 yum-cron 自动更新系统。但我的互联网连接非常有限,我不希望更新过程占用一小部分可用的互联网,并使网络上每个人的计算机使用都很痛苦。

如何设置 yum 自动检查和下载更新,但仅限凌晨 2 点到 6 点之间?

答案1

好吧,如果是我,我会设置一个root每天凌晨 2 点开始的 cron 作业 (for )。就像这样:

0 2 * * * /bin/yum -y update

大约是因为它可以得到!

答案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 运行在与您的用户不同的环境中,这是一个常见的问题和挫败感的根源。例如,请参阅以下帖子:

相关内容