最近换了个VPS,每隔几天ssh上去的时候就看到 *** System Restart Required *** 这个提示,作为一个强迫症,每次都会去重启服务器。虽然是台VPS,但每次重启都意味目前正常运行的服务可能出现异常。

问题原因

出现这个提示说明服务器有自动更新,然后自动更新后需要重启。

首先,来看看哪些些更新后需要重启,可以查看 /var/run/reboot-required.pkgs 来确认

  1. #cat /var/run/reboot-required.pkgs
  2. linux-image-5.4.0-54-generic
  3. linux-base

服务器没开启自动更新的情况下没有 /var/run/reboot-required.pkgs 这个文件

可以看出系统自动更新了内核需要重启。

解决办法

方案一 停止自动更新

查看自动更新的配置:

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

配置项含义:

  • Update-Package-Lists 配置项表示每隔1天执行 apt update
  • Unattended-Upgrade 配置项表示每隔1天执行 apt upgrade

如果需要停止自动更新,把1改成0就可以来了

改成0后重启服务器,/var/run/reboot-required.pkgs 文件就消失了

方案二 对特定包排除自动更新

使用apt-mark来屏蔽内核自动更新

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

讨论

要不要开启自动更新,可能有人会觉得屏蔽自动更新不能及时更新安全补丁不够安全,实际上对于运行业务对服务器来说,自动更新是危险的行为,无法知道自动更新执行了什么命令,会产生什么影响。