我正在尝试使用 Spacewalk 配置组织内所有 GNU/Linux 机器的补丁管理,但我在时间安排方面有些困难。变更管理部门已决定,开发/测试环境应在每周二早上 5-7 点打补丁,生产环境应在周四早上同一时间段打补丁。除了检查、下载和应用补丁外,我还添加了一个脚本,用于在内核更新时重新启动服务器,以及一个脚本,用于清理 yum。我已将这些脚本放在 /etc/cron.weekly/ 中,并按如下方式配置 anacrontab:
1 5 cron.daily nice run-parts /etc/cron.daily
7 5 cron.weekly nice run-parts /etc/cron.weekly
我的问题是所有东西每天都会执行,我认为问题是由 yum-cron 的配置文件 /etc/yum-cron.conf 引起的。我试图找到有关如何配置此文件的信息,而设置 DAYS_OF_WEEK / days_of_week 显然是奇迹发生的地方。手册页也没什么帮助。我的问题是,我他妈的怎么把星期几设置为星期二 (2) 或星期四 (4)?我尝试了不同的变化,例如:
DAYS_OF_WEEK=2
DAYS_OF_WEKK="2"
days_of_week = 2
days_of_week = "2"
但似乎没有任何事情像我希望的那样工作。我预感到对于 CentOS 7,我必须使用小写的 days_of_week,而对于 CentOS 6,我必须使用大写,但我不确定。
任何意见或想法都将受到赞赏,并提前致谢!
答案1
显然,EL 7 中的 yum-cron 3.4 删除了 /etc/sysconfig/yum-cron,包括 DAYS_OF_WEEK 功能。我在 /usr/sbin/yum-cron 中没有看到等效项。
根据您的喜好自定义配置文件(/etc/yum/yum-cron.conf
)。默认值至少random_sleep
要比您的 2 小时窗口长。
编写并安排您自己的脚本。
#!/bin/sh
# /usr/local/bin/updateandreboot
# Wrapper for update and reboot
# TODO does not respect /var/lock/subsys/yum-cron
/usr/sbin/yum-cron /etc/yum/yum-cron.conf && \
/usr/bin/needs-restarting -r || \
/usr/sbin/shutdown -r now "Restarting for scheduled software update"
由于我不知道 anacron 中星期几的安排,所以在 cron 中安排它。
# /etc/cron.d/autoupdate
# 05:01 on Tuesday
1 5 * * 2 root /usr/local/bin/updateandreboot
还可安排yum clean packages
所需时间。
删除 yum-cron 的默认每日和每周计划。 rm /etc/cron*/*yum*cron
将会执行此操作,但是当 yum-cron 包更新时,这些计划将会恢复。
答案2
这可能取决于分布,但在 RedHat 中,yum-conf 的每日和每小时 cronjobs 仅在 yum-conf 服务正在运行时运行。
在 /etc/cron.dail/0yum-daily.cron 中
#!/bin/bash
# Only run if this flag is set. The flag is created by the yum-cron init
# script when the service is started -- this allows one to use chkconfig and
# the standard "service stop|start" commands to enable or disable yum-cron.
if [[ ! -f /var/lock/subsys/yum-cron ]]; then
exit 0
fi
# Action!
exec /usr/sbin/yum-cron
因此,只需禁用服务并根据需要配置标准 cronjob 即可。