解决 Ubuntu 每次登录都提示 System Restart Required 问题

小助手读文章 00:00 / 00:00

温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。

最近一段时间通过 SSH 登录华为云 Ubuntu 系统 VPS,都会提示 *** System Restart Required ***,即便重启了,过一段时间又出现这个提示,而实际上在这期间并没有对系统进行过任何操作。

问题分析

出现 *** System Restart Required *** 这个提示,说明存在 /var/run/reboot-required 文件,Ubuntu 软件包可以在安装时通过 postinst 创建该文件触发重启指令。

一般来讲,安装后需要重启的,大多是内核,或者安全补丁,可以查看文件 /var/run/reboot-required.pkgs 来确认:

# cat /var/run/reboot-required.pkgs
linux-image-4.15.0-54-generic
linux-base

可以看到 /var/run/reboot-required.pkgs 存在(正常不存在),且记录了是 linux-baselinux-image-4.15.0-54-generic 引起的,说明本次问题的原因是系统自动更新了内核或补丁。

解决方法

内核或补丁更新需要重启,这是肯定的,执行重启命令来应用内核或补丁:

# reboot

如果不想重启也不想在登录时看到*** System Restart Required ***,可以直接删除重启指令文件 /var/run/reboot-required

# rm -rf  /var/run/reboot-required

但是还是建议先看下是什么软件包引起的,根据实际情况决定是否重启。

上面两个方法只是解决本次*** System Restart Required ***问题,过段时间在系统自动更新作用下,可能又会再次出现,因此我们可以屏蔽内核自动更新:

# apt-mark hold linux-base linux-image-generic linux-headers-generic libssl1.1

可能有人会说屏蔽自动更新不够安全,实际上对于生产环境来说,自动更新是危险的行为,你可能永远无法知道自动更新执行了什么命令,会对生产环境产生什么影响。

可以执行下列命令重新启用内核自动更新:

# apt-mark unhold linux-base linux-image-generic linux-headers-generic libssl1.1

新版的 Ubuntu 采用了 snap 套件管理工具,也会不定期 ubuntu repository 更新,故而还需禁用 snap:

# systemctl disable {snapd,snapd.socket,snapd.refresh.timer}
# systemctl stop {snapd,snapd.socket,snapd.refresh.timer}

此外,apt 本身也会自动更新,查看文件 /etc/apt/apt.conf.d/20auto-upgrades 可以看到默认是每天一次:

# cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

这里将 1 改为 0 即可屏蔽。

屏蔽后,登录 SSH 可能会出现如下提示,忽略即可:

1 updates could not be installed automatically. For more details,
see /var/log/unattended-upgrades/unattended-upgrades.log

参考文章:

1、《*** System Restart Required *** – Automated Linux Kernel Patches
2、《Ubuntu 上 apt 的 unattended-upgrades 自動更新


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 ubuntu华为云经验解决方法重启 的文章

 本文最后更新于 2019/12/13 16:47:06,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 运维 > 解决 Ubuntu 每次登录都提示 System Restart Required 问题