操作系统更新后重启系统服务

本指南介绍如何使用 clr-service-restart

概述

Clear Linux* OS 包含 clr-service-restart 工具,该工具显示哪些系统守护程序需要重新启动。

clr-service-restart 读取内核提供的 procfs 文件系统中的各种文件,并依靠 systemd 来确定要重新启动哪些服务。

工作原理

clr-service-restart 会实现一个白名单,以确定哪些守护程序可以重启。系统管理员可以使用 allowdisallow 选项自定义重启系统服务时使用的默认 Clear Linux OS 操作系统白名单。执行软件更新时,clr-service-restart 会查阅该白名单,确认是否允许重启某个服务守护程序。有关详细信息,请参阅选项部分。

基本选项

clr-service-restart 具有三个基本选项: allowdisallowdefault

允许

allow 选项标识操作系统软件更新后要重启的守护程序。clr-service-restart 守护程序会在 /etc/clr-service-restart 中创建一个符号链接作为记录。下面的示例指示 clr-service-restart 在操作系统软件更新后重启 tallow 守护程序。

sudo clr-service-restart allow tallow.service

不允许

disallow 选项指示 clr-service-restart 不要重启指定的守护程序,即使操作系统默认允许重启该守护程序。clr-service-restart 守护程序会在 /etc/clr-service-restart 中创建一个指向 /dev/null 的符号链接作为记录。下面的示例指示 clr-service-restart 在操作系统软件更新后不要重启 rngd 守护程序。

sudo clr-service-restart disallow rngd

默认

default 选项指示 clr-service-restart 恢复使用操作系统默认设置,并删除 /etc/clr-service-restart 中的任何符号链接。下面的示例指示 clr-service-restart 重新自动重启 rngd,因为 Clear Linux OS 默认将 rngd 加入了自动重启服务白名单。

sudo clr-service-restart default rngd

监控选项

clr-service-restart 在后台运行,并通过 swupd 自动调用。查看日志输出可确认在操作系统软件更新后重启的服务。

如果同时传递两个选项(-a-n),clr-service-restart 会显示需要重启的系统服务的完整清单。使用这两个选项可确认所有所需的守护程序都已重启。

-n option

此选项指示 clr-service-restart 不执行任何重启,而是显示可能要重启的服务。使用该选项时,clr-service-restart 会输出一个消息列表,显示:

  • 哪个服务需要重启。
  • 它是什么单元。
  • 为什么它需要重启。
  • 重启该单元需要哪个命令。

-a option

此选项指示 clr-service-restart 考虑所有系统服务,而不仅仅是白名单中的服务。因为 Clear Linux OS 中的默认白名单相对较短,所以您可以在登录系统时使用此选项重启所有受影响的服务。

示例

在下面的示例中,clr-service-restart 使用 -a-n 两个选项进行了调用,显示了需要重新启动的系统服务的完整列表。

命令:

sudo clr-service-restart -a -n

示例输出:

upower.service: needs a restart (a library dependency was updated)
/usr/bin/systemctl --no-ask-password try-restart upower.service
NetworkManager.service: needs a restart (a library dependency was
updated)
/usr/bin/systemctl --no-ask-password try-restart NetworkManager.service
....

遥测技术

clr-service-restart 可能会导致一些问题,例如守护程序重启时服务短暂中断,或者守护程序未能正确重启。为了最大限度减少这些问题,clr-service-restart 会创建遥测记录,并在满足以下两个条件时将其发送到可选的 Clear Linux OS 遥测服务:

  • 如果某个单元在操作系统更新后无法自动重启。
  • 如果该单元位于系统位置 /usr/lib/systemd/system

如果未安装 Clear Linux OS 遥测捆绑包,该数据将被丢弃。如果安装了遥测捆绑包并选择发送遥测数据,则该系统单元名称将发送到 Clear Linux OS 遥测服务。我们会评估报告并更新白名单,移除出无法正常重启的服务。

总结

Clear Linux OS 团队喜欢想出简单但有效的解决方案,让您的工作变得更轻松。我们为 clr-service-restart 创建了一个 github 项目,并邀请您查看代码,分享您的想法,并与我们一起改进该项目。您可以在以下网址找到该项目:

https://github.com/clearlinux/clr-service-restart