当前位置: 首页>>技术教程>>正文


motd – “需要重新启动系统”…为什么?如何获取触发此通知的内容以显示详细信息?

问题描述

每隔一段时间,我会通过 SSH 连接到一个带有 unattended-upgrades 的盒子,然后收到“** System restart required ***”的问候,没有其他信息。

我的 ‘/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 将被替换。但是一些不完全人类可读的东西也可能没问题。

最佳思路

编辑:另一个可能相关或有用的 article

正如您已经发现的那样,您可以在 /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 以使这更方便( 123 )。

  • 另一种方法是使用 packages.ubuntu.com 。\n在你的情况下:\n

次佳思路

最终调用的文件是 /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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13053.html,未经允许,请勿转载。