如何使“needrestart”不推迟重新启动某些服务

cue*_*dee 9 apt systemd unattended-upgrades

通过unattended-upgrades适当设置自动执行升级、重新启动等操作,有时我很难在每日报告中找到这样的输出:

...
Restarting services...
 /etc/needrestart/restart.d/systemd-manager
 systemctl restart accounts-daemon.service networkd-dispatcher.service polkit.service systemd-networkd.service systemd-resolved.service systemd-timesyncd.service systemd-udevd.service

Service restarts being deferred
 systemctl restart apt-daily-upgrade.service
 systemctl restart systemd-journald.service
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service
...
Run Code Online (Sandbox Code Playgroud)

我知道这是来自 的输出needrestart。我不明白是什么设置了重新启动的服务和不重新启动的服务我需要更改哪些配置才能使其在无人值守的情况下重新启动所有这些服务?

Bro*_*ary 8

needrestart包维护了不应在 中自动重新启动的服务的排除列表/etc/needrestart/needrestart.conf。寻找$nrconf{override_rc}设置。

修改此列表时要小心。根据我的快速浏览,似乎大多数默认排除都是由于用户报告的重新启动服务时出现的问题造成的。该文件中的许多排除项都有一个带有 Debian bug 跟踪器编号的注释,解释了为什么存在排除项。

查看您问题中的示例,这些排除项导致您的服务无法自动重新启动:

  • apt-daily-upgrade.service并且unattended-upgrades.service不会重新启动,因为重新启动这些服务可能会终止正在运行的needrestart进程(如果该进程是由这些服务启动的)。这记录在 bug #862840中。
  • systemd-journald.service没有重新启动,因为它破坏了许多其他服务。这记录在 bug #771122中。然而,这个问题已经有 2 年历史了,并且在较新版本 (3.4+) 的needrestart. 我的 Ubuntu 22.04 系统上也不排除这种情况。
  • systemd-logind.service不会重新启动,因为这样做会终止正在运行的 X 服务器会话。这记录在 bug #798097中。