我正在运行 Debian 7 稳定版,并进行无人值守升级(每天早上 6 点),以确保始终完全更新。我有以下配置:
$ cat /etc/apt/apt.conf.d/50unattended-upgrades
// Automatically upgrade packages from these origin patterns
Unattended-Upgrade::Origins-Pattern {
// Archive or Suite based matching:
// Note that this will silently match a different release after
// migration to the specified archive (e.g. testing becomes the
// new stable).
"o=Debian,a=stable";
"o=Debian,a=stable-updates";
// "o=Debian,a=proposed-updates";
"origin=Debian,archive=stable,label=Debian-Security";
};
// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};
// This option allows you to control if on a unclean dpkg exit
// unattended-upgrades will automatically run
// dpkg --force-confold --configure -a
// The default is true, to ensure updates keep getting installed
//Unattended-Upgrade::AutoFixInterruptedDpkg "false";
// Split the upgrade into the smallest possible chunks so that
// they can be interrupted with SIGUSR1. This makes the upgrade
// a bit slower but it has the benefit that shutdown while a upgrade
// is running is possible (with a small delay)
//Unattended-Upgrade::MinimalSteps "true";
// Install all unattended-upgrades when the machine is shuting down
// instead of doing it in the background while the machine is running
// This will (obviously) make shutdown slower
//Unattended-Upgrade::InstallOnShutdown "true";
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "[email protected]"
Unattended-Upgrade::Mail "root";
// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
Unattended-Upgrade::MailOnlyOnError "true";
// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
// Automatically reboot *WITHOUT CONFIRMATION* if a
// the file /var/run/reboot-required is found after the upgrade
Unattended-Upgrade::Automatic-Reboot "true";
// Use apt bandwidth limit feature, this example limits the download
// speed to 70kb/sec
//Acquire::http::Dl-Limit "70";
如您所见,Automatic-Reboot 为真,因此服务器应该自动重启。上次我检查时,服务器已在线超过 100 天,这意味着从 Debian 7.1 到 Debian 7.2 的更新是在服务器启动时发生的(事实上,所有更新都已安装),但这涉及内核更新,这意味着服务器应该重新启动。但事实并非如此。服务器运行非常慢,所以我重新启动后就解决了这个问题。
我做了一些研究,发现 unattended-upgrades 响应 /var/run/ 中的重新启动所需文件。我触摸了这个文件并等待了一个星期,文件仍然存在,服务器没有重新启动。所以我认为 unattended-uppgrades 忽略了自动重启部分。那么,我在这里做错了什么吗?为什么服务器没有重新启动?
顺便说一下,升级部分运行完美,只是重启部分似乎没有正常工作。
答案1
/var/run/reboot-required
配置中提到的文件是由包中的脚本创建的update-notifier-common
。如果没有安装此包,则不会发生自动重启。
不幸的是,在任何地方都没有提到这一点unattended-upgrades
!