我每天运行 Ubuntu 和 Fedora,并且通常几乎每天运行一次包管理器来检查更新。
当我获得内核更新时,我通常会重新启动,以便在新内核上运行,并且可以查看是否存在任何故障(几乎总是好的)。
如果我添加
apt-get update && apt-get -y upgrade
或者
dnf check-update && dnf upgrade
我的 root crontab 有什么程序错误吗?
如果我设置 crontab 在凌晨 4 点执行此操作并且它安装了新内核,然后我不重新启动并且它会自动安装第二个新内核,该怎么办?如果我一个月没有重新启动我的 Ubuntu 机器,并且在此期间对同一软件进行了 3 个内核更新和几个其他补丁,该怎么办?
这样可以自动更新吗?我知道 Ubuntu 有一个“无人值守升级”实用程序,但我宁愿了解其他系统管理员的工作,并采用更“实际”的方法来管理我的电脑。
答案1
通常,具有混合安装基础的系统管理员会使用跨平台配置管理/编排系统(例如 Puppet、Chef 或 Ansible)来管理更新。
如果您愿意,您还可以较小规模地设置其中一个工具。
或者,在 Fedora * 上,您可以使用DNF 自动- 看有关配置此功能的 Fedora 页面。这比简单的 cron 脚本更好,因为它具有更好的错误处理和更多的输出选项。
对于 Ubuntu,社区 wiki 上有相关说明自动更新,但我还没有使用过它们,所以除了提供指针之外我无法发表更多评论。
* 披露:我在 Fedora 上工作
答案2
我认为无人值守升级工具就是这样做的方法。
它只是一个 python 脚本,里面有几个无人值守的 dpkg 选项,您可以利用配置文件 /etc/apt/apt.conf.d/50unattended-upgrades 中有关重新启动的选项:
// 自动重启未经确认if // 升级后找到文件 /var/run/reboot-required Unattended-Upgrade::Automatic-Reboot "false";
// 当 Unattended-Upgrade::Automatic-Reboot "false" 时,即使当前有用户登录也会自动重新启动; //无人值守升级::自动重启-WithUsers "true";
// 如果启用并需要自动重启,则在特定时间重启,而不是立即重启 // 默认:“now” //Unattended-Upgrade::Automatic-Reboot-Time "02:00";
还有一些其他选项可以以更具体的方式配置行为(仅安全更新、使用额外的存储库等)。
https://wiki.debian.org/UnattendedUpgrades
然后您可以使用两种方式安排它:
- 只需将无人值守升级放入 root 的 crontab 中即可。
- 使用配置文件来执行此操作。