时不时地,我会通过 SSH 进入一个带有无人值守升级的盒子,然后会看到“** 需要重启系统 ***”而没有任何其它信息。
我的'/var/run/reboot-required.pkgs'文件包含:
linux-image-3.13.0-61-generic
linux-base
linux-base
linux-base
我不介意重启,但我不喜欢在没有了解为什么首先应该重启的详细信息的情况下重启。上面,我看到两个软件包触发了该消息,但除此之外没有其他解释。
有没有办法额外的有关重启的原因的详细信息也会显示在 SSH 登录上?
理想情况下,我希望提取一个包含人类可读内容的文件,例如“包 xyz 已于 [日期/时间] 更新。它需要修改文件 a、b 和 c,但无法修改,因为系统阻止/将阻止该操作。在下次重新启动时,文件 a、b 和 c 将被替换。”但一些不完全人类可读的内容可能也可以。
答案1
编辑:另一个可能相关或有用的文章。
正如您已经发现的那样,您可以在/var/run/reboot-required.pkgs
现在您只需查看包的更改日志即可找到您正在寻找的信息。
- 如果您已经在机器上,您可以在
/usr/share/doc/${package_name}
(例如zless /usr/share/doc/linux-image-3.13.0-61-generic/changelog.Debian.gz
:)中找到更改日志。 - Debian 提供了一些工具,例如
apt-listchanges
为了更加方便(1,2,3)。 另一种方法是使用packages.ubuntu.com。
就你的情况而言:
答案2
最终调用的文件是/usr/lib/update-notifier/update-motd-reboot-required
(它被 调用/etc/update-motd.d/98-reboot-required
)。
在其中一个文件的条件 if 语句中,只需添加以下内容:
echo "Packages causing reboot:"
cat /var/run/reboot-required.pkgs
例如,你的/usr/lib/update-notifier/update-motd-reboot-required
文件看起来应该是这样的:
#!/bin/sh -e
#
# helper for update-motd
if [ -f /var/run/reboot-required ]; then
cat /var/run/reboot-required
echo "Packages causing reboot:"
cat /var/run/reboot-required.pkgs
fi