文章目录
- 前言
- 1. 问题现象
- 1.1 使用`journalctl`命令查看更详细的日志信息
- 2. 解决思路
- 2.1 思路一:
- 2.2 思路二:
- 2.3 合理的解法:
- 3. 扩展-修复内存泄露
- 3.1 查看自己使用的镜像
- 3.2 到麒麟官网下载相应的补丁包
- 3.3 安装步骤
- 3.4 重启kylin-kms-activation.service服务
- 4. 麒麟相关资料手册
前言
who:本文写给想解决kylin-kms-activation.service
服务不断重启。
what:主要分为问题现象、解决思路两个部分。
when:文档创建时间:2024年8月29日
where:作者-松鼠会吃榛子 版本v1
why:希望能帮读者了解这个问题,并了解麒麟操作系统官网,并能够自行查找资料。
1. 问题现象
银河麒麟高级服务器操作系统V10SP3(X86)kylin-kms-activation.service服务报错问题。
kylin-kms-activation.service
服务是银河麒麟高级服务器操作系统中用于KMS(Key Management Service)激活的系统服务。该服务在系统中默认每30秒重启一次,如果服务无法正常加载,系统会报错,并且message日志会每30秒刷新一次。这表明该服务在系统中扮演着重要的角色,特别是在处理激活状态和与KMS服务器的通信方面。
KMS是一种由Microsoft提供的服务,用于在企业内部或教育机构内部管理大量许可证。该服务在系统中负责处理激活相关的任务,包括与KMS服务器的通信和激活状态的管理。
1.1 使用journalctl
命令查看更详细的日志信息
journalctl -u kylin-kms-activation.service | tail -n 20
根据提供的日志内容,看起来是麒麟操作系统(Kylin OS)中的一个服务kylin-kms-activation.service
遇到了问题。这个服务似乎在尝试启动时失败了,并且系统尝试了多次重启服务,但每次重启后都以相同的错误退出。
这里是一些关键点:
systemd[1]
: 这是麒麟操作系统中的初始化系统,负责管理服务的启动和停止。Stopped run kylin_kms_daemon at boot time.
: 这表明kylin_kms_daemon
服务在启动时被停止了。Started run kylin_kms_daemon at boot time
: 这表明kylin_kms_daemon
服务被尝试重新启动。kylin-kms-activation.service: Main process exited, code=exited, status=255/EXCEPTION
: 这表明服务的主进程退出了,并且退出状态码是255,这通常表示发生了异常。Service RestartSec=30s expired, scheduling restart
: 这表明服务的重启间隔时间(RestartSec)已经过期,系统正在安排重启服务。restart counter is at 3569
: 这表明服务已经被尝试重启了3569次。
2. 解决思路
2.1 思路一:
步骤 1: 修改kylin-kms-activation.service服务文件
vim /usr/lib/systemd/system/kylin-kms-activation.service
在[unit]
部分添加以下参数
# Manually added parameters
StartLimitInterval=180
StartLimitBurst=1
步骤2:重新加载服务配置。
systemctl daemon-reload
步骤3:重新启动服务,并检查状态。
systemctl restart kylin-kms-activation.service
systemctl status kylin-kms-activation.service
根据systemctl status
命令的输出内容,kylin-kms-activation.service
服务目前的状态是:
- Loaded: 加载了服务定义,位于
/usr/lib/systemd/system/kylin-kms-activation.service
;服务已被启用(enabled
);但供应商默认情况下是禁用的(vendor preset: disabled
)。 - Active: 服务当前是活跃的(
active
)且正在运行(running
),自2024年8月29日14:30:35起运行,大约1秒前。 - Main PID: 主要进程ID是285941,正在运行
kylin_kms_daemo
(注意这里可能有一个拼写错误,应该是kylin_kms_daemon
)。 - Tasks: 服务启动了2个任务。
- Memory: 服务使用了1.1MB的内存。
- CGroup: 服务所在的控制组(cgroup)路径。
从这些信息来看,服务似乎正在正常运行。
步骤4:要查看服务的最后30行日志。
主要看最后面的。
journalctl -u kylin-kms-activation.service -n 30
发现日志还是显示kylin-kms-activation.service
不断重启,还报错Failed to start run kylin_kms_daemon at boot time.
。
步骤5:查看服务状态。
systemctl status kylin-kms-activation.service
2.2 思路二:
步骤 1: 修改kylin-kms-activation.service服务文件
vim /usr/lib/systemd/system/kylin-kms-activation.service
在[Service]
部分修改第13行参数
# Modify the following line
Restart=failure
或
Restart=on-failure
步骤2:下面参考思路一:的操作来。
systemctl daemon-reload
systemctl restart kylin-kms-activation.service
systemctl status kylin-kms-activation.service
journalctl -u kylin-kms-activation.service -n 3
发现报exit-code
。
2.3 合理的解法:
步骤 1: 不动原来的配置。
步骤 2: 重新加载服务配置,重新启动服务。
systemctl daemon-reload
systemctl restart kylin-kms-activation.service
systemctl status kylin-kms-activation.service
步骤 3: 再查看服务日志。
journalctl -u kylin-kms-activation.service -n 3
系统已恢复到原来的情况。
==这个问题,具体是什么原因,目前还不知道。==如果有知道的技术爱好者可以私信我。
步骤 4: 使用top
命令查看kylin_kms_daemo进程的状态。
top
- PID: 104187 —— 这是进程的ID,是一个唯一的数字,用来标识系统中的进程。
- USER: root —— 表示运行该进程的用户是
root
。 - PR: 20 —— 表示进程的优先级。数值越小,优先级越高。
- NI: 0 —— 表示进程的nice值,也就是进程的相对优先级。nice值越小,进程的优先级越高。
- VIRT: 29444 —— 表示进程使用的虚拟内存总量,单位是KB。
- RES: 8400 —— 表示进程使用的物理内存(常驻集)大小,单位是KB。
- SHR: 7268 —— 表示进程使用的共享内存大小,单位是KB。
- S: 表示进程的状态。
S
代表中断睡眠状态(Interruptible sleep),进程正在等待某个事件的完成。 - %CPU: 0.0 —— 表示进程在过去的一段时间内(通常是1分钟)所占用的CPU百分比。
- %MEM: 0.1 —— 表示进程使用的物理内存占总内存的百分比。
- TIME+: 0:00.02 —— 表示进程已经运行的总CPU时间,这里是0分钟和2秒钟。
- COMMAND: kylin_kms_daemo —— 这是启动进程的命令。
根据这些信息,可以看出kylin_kms_daemo
进程正在运行,占用的资源相对较少(0.1%的内存),并且在过去一段时间内几乎没有使用CPU(0.0%的CPU使用率)。所以,即便启动这个服务也不会占用太多资源。
步骤 5: 考虑不断产生日志会不会占用磁盘空间。
- 查看日志文件位置
cd /var/log
用cat
命令查看ky*等几个文件,发现并没有跟kylin-kms-activation.service
服务相关的日志文件。
- 在
kylin-kms-activation.service
文件加入日志文件存储的地方,以方便后期删除。
vim /usr/lib/systemd/system/kylin-kms-activation.service
- 在
[Service]
部分添加以下参数
StandardOutput=file:/var/log/kylin-kms-activation-service.log
StandardError=file:/var/log/kylin-kms-activation-service.err
- 重新加载服务配置,重新启动服务。
systemctl daemon-reload
systemctl restart kylin-kms-activation.service
systemctl status kylin-kms-activation.service
- 查看日志。
发现并没有相关日志出现
后面我改为原来的配置了,并在一台机器上停止了这个服务,一台机器上启动这个观察有什么变化。后续再看看是什么原因,也许可能本身这个服务就是这个吗设置的(苦笑)
systemctl stop kylin-kms-activation.service
3. 扩展-修复内存泄露
修复 libkylin-activation 软件包在 KMS 环境中的内存泄漏问题是一个很好的改进措施。
1.查看是否已安装kylin-kms-activation相关的软件包。
[root@localhost ~]# rpm -qa | grep libkylin-activation
[root@localhost ~]#
3.1 查看自己使用的镜像
我已经清楚自己挂载的镜像是那一个。
如果你不清楚的话,可以用命令查看系统信息,再去官网对照。
[root@localhost ~]# nkvers
############## Kylin Linux Version #################
Release:
Kylin Linux Advanced Server release V10 (Lance)
Kernel:
4.19.90-52.22.v2207.ky10.x86_64
Build:
Kylin Linux Advanced Server
release V10 (SP3) /(Lance)-x86_64-Build23/20230324
#################################################
[root@localhost ~]#
3.2 到麒麟官网下载相应的补丁包
下载地址:KYBA-202309-1004 - 国产操作系统、麒麟操作系统——麒麟软件官方网站 (kylinos.cn)
注意:根据自己的操作系统版本下载。
3.3 安装步骤
1.用xftp
上传到服务器中。
[root@localhost 桌面]# ls
libkylin-activation-3.0-64.p54.ky10.x86_64.rpm
[root@localhost 桌面]#
2.安装。
注意:如果没有连接外网的话,需要用镜像设置本地仓库源。
[root@localhost 桌面]# dnf install -y libkylin-activation-3.0-64.p54.ky10.x86_64.rpm
3.检查是否已经安装。
[root@localhost 桌面]# rpm -qa | grep -i libkylin-activation-3.0-64.p54.ky10.x86_64
libkylin-activation-3.0-64.p54.ky10.x86_64
[root@localhost 桌面]#
3.4 重启kylin-kms-activation.service服务
systemctl restart kylin-kms-activation.service
systemctl status kylin-kms-activation.service
systemctl enable kylin-kms-activation.service
4. 麒麟相关资料手册
下载地址:资料下载 (kylinos.cn)