我想确定 Ubuntu 12.04 服务器上是否启用了自动更新。
我该如何具体检查这一点?
如果已启用自动更新,我该如何禁用它?
答案1
有一个包可以用来帮您完成这一任务。
sudo apt-get install unattended-upgrades
或者如果已经安装了 unattended-upgrades。或者您可以检查Ubuntu 文档
sudo dpkg-reconfigure -plow unattended-upgrades
这是您需要安装的软件包。安装后,编辑文件
/etc/apt/apt.conf.d/10periodic
/etc/apt/apt.conf.d/20auto-upgrades
在该文件中,您可以设置服务器更新的频率。
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
该文件看起来应该像这样。1 表示它将每天更新。7 表示每周更新。
/etc/apt/apt.conf.d/50unattended-upgrades
通过选择 apt 可以搜索新更新和升级的位置,此文件将允许您选择要进行的更新。(我个人的看法是,如果这是服务器,我会将其设置为安全)
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// "${distro_id}:${distro_codename}-updates";
};
变量${distro_id}
和${distro_codename}
会自动扩展。我会注释掉更新条目,只保留安全性。
答案2
检查日志/var/log/unattended-upgrades/
以验证您的无人值守升级是否正在应用。
答案3
(我做了另一个答案,因为我对 LinuxBill 的答案的修改被拒绝了。)
有一个软件包可用于为您启用自动更新。它被称为 unattended-upgrades。
使用以下命令启用/禁用自动更新:
sudo dpkg-reconfigure -plow unattended-upgrades
该命令将修改文件/etc/apt/apt.conf.d/20auto-upgrades
,也可能修改/etc/apt/apt.conf.d/10periodic
。
software-properties-gtk
或者,您可以通过在“更新”选项卡中更改“当有安全更新时:”中的设置来启用自动更新 GUI 方式。这将修改文件/etc/apt/apt.conf.d/10periodic
和/etc/apt/apt.conf.d/20auto-upgrades
。
或者,您可以手动修改上述文件。编辑:您可以创建一个以更大数字作为名称前缀的新文件(例如 21auto-upgrades)来覆盖 20auto-upgrades 中的设置。
在该文件中,您可以设置更新调用的频率:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
1 表示每天更新。7 表示每周更新。变量 APT::Periodic::AutocleanInterval 决定“apt-get autoclean”自动执行的频率。0 表示禁用这些变量,这样您就可以禁用自动更新和删除。编辑:由于现在使用 Systemd 计时器和服务而不是 Cron 来调用自动更新和升级,最好将变量设置为“始终”而不是“1”。这样,即使部分随机化的时间安排使得调用比上次调用后整整一天更早完成,也可以获得更改。
您可以通过以下方式检查当前设置apt-config dump APT::Periodic
您可以通过编辑文件来更改无人值守升级的工作方式/etc/apt/apt.conf.d/50unattended-upgrades
。此文件将允许您选择要进行的更新,方法是选择 apt 可以在何处搜索新的更新和升级。实际上,最好创建一个新文件来放置修改;将其命名为51unattended-upgrades-local
或大于目录中原始文件的其他名称,以便更改生效;这样,原始文件保持不变,如果升级 unattended-upgrades 意味着对文件进行更改,这将有所帮助。
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
变量${distro_id}
和${distro_codename}
会自动扩展。上面只有安全更新是自动完成的。您可以将自动更新扩展到任何存储库并在Unattended-Upgrade::Origins-Pattern
部分中进行设置。请参阅另一个问题。
你可能想改变
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
到
Unattended-Upgrade::Remove-Unused-Dependencies "true";
这样会自动删除多余的旧内核,这样 /boot 就不会变满。它相当于sudo apt autoremove
。
编辑:较新版本的无人值守升级包含用于删除未使用的软件包的更复杂的设置,因此您不需要启用以前的设置:
// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
//Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Do automatic removal of newly unused dependencies after the upgrade
//Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
更多信息请参阅Ubuntu 文档和无人值守升级 github
答案4
在 Ubuntu 20.04 中,你可以使用
systemctl status unattended-upgrades.service
检查无人值守升级服务正在运行。
参考:https://www.digitalocean.com/community/tutorials/how-to-keep-ubuntu-20-04-servers-updated
另外,要检查 unattended-updrades 服务的日志,请使用 journalctl 命令:
# For the current boot logs
journalctl --unit unattended-upgrades.service --boot
# For all time logs
journalctl --unit unattended-upgrades.service
有关更多详细信息,请参阅相应命令的手册页:
man systemctl
man journalctl