注册
注册 DFMagent 系统服务自启动
专栏/技术分享/ 文章详情 /

注册 DFMagent 系统服务自启动

好好学习 2026/07/10 243 1 0
摘要

一:问题描述

环境简介:

DMDFM V5.02.12
操作系统:kylin v10 sp3

问题现象:

通过 DMDFM 远程部署节点 195 上的 DRSAgent ,已选择 【注册系统服务】,部署用户为 dmdba, 但在节点 195 系统上无 Agent 自启动系统服务存在,导致 DRSAgent 需要手动启动。

二:分析排查

查看DMDFM 服务端上 DFMAGENT 服务注册过程如下:
root用户执行如下命令注册系统服务
# /home/dmdba/dmdrs5/scripts/root/root_installer.sh

查看root_installer.sh文件内容如下,需要使用service_installer.sh文件

#!/bin/sh

#run by root
RUID=`/usr/bin/id|awk -F\( '{print $1}'|awk -F\= '{print $2}'`
if [ ${RUID} != "0" ]
then
         echo "必须以 root身份执行此脚本!"
        exit 1
fi


echo "创建DmServiceDFDB服务"
"/home/dmdba/dmdrs5/scripts/root/service_installer.sh" -s "/home/dmdba/dmdrs5/db/bin/DmServiceDFDB"

echo "创建DfmWebService服务"
"/home/dmdba/dmdrs5/scripts/root/service_installer.sh" -s "/home/dmdba/dmdrs5/web/DfmWebService"

echo "创建DfmAgentService服务"
"/home/dmdba/dmdrs5/scripts/root/service_installer.sh" -s "/home/dmdba/dmdrs5/agent/DfmAgentService"

echo "启动DmServiceDFDB服务"
systemctl start DmServiceDFDB.service

echo "启动DfmWebService服务"
systemctl start DfmWebService.service

echo "启动DfmAgentService服务"
systemctl start DfmAgentService.service

其执行输出如下:

创建DmServiceDFDB服务
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDFDB.service → /usr/lib/systemd/system/DmServiceDFDB.service.
创建服务(DmServiceDFDB)完成
创建DfmWebService服务
Created symlink /etc/systemd/system/multi-user.target.wants/DfmWebService.service → /usr/lib/systemd/system/DfmWebService.service.
创建服务(DfmWebService)完成
创建DfmAgentService服务
Created symlink /etc/systemd/system/multi-user.target.wants/DfmAgentService.service → /usr/lib/systemd/system/DfmAgentService.service.
创建服务(DfmAgentService)完成

查远端 agent 目录下的service_installer.sh 内容为空。但在 DMDFM 服务端上service_installer.sh 有内容,且 DFMAgent 服务注册正常,能自启动。

-rwxr--r-- 1 dmdba dmdba         0  7月  5 20:51 service_installer.sh

分析结论:

目标端上service_installer.sh 为空导致 DFMAgent 注册系统服务失败

三:问题解决

手动创建 systemd 单元文件
将各个节点的原文件DfmAgentServiceagent_XXX 重命名为通用名,便于批量更改;
注意:以root 用户执行如下操作:

# 查看当前节点的启动文件脚本名
ll /home/dmdba/dmdrs/agent/DfmAgentServiceagent*
如: /home/dmdba/dmdrs/agent/DfmAgentServiceagent_195

# 复制重命名为标准文件名并授权
cp /home/dmdba/dmdrs/agent/DfmAgentServiceagent_195 /home/dmdba/dmdrs/agent/DfmAgentServiceagent
chown dmdba:dmdba /home/dmdba/dmdrs/agent/DfmAgentServiceagent

创建systemd服务单元文件:

# vi /usr/lib/systemd/system/DfmAgentServiceagent.service

[Unit]
Description=DfmAgentServiceagent

[Service]
Type=forking
PIDFile=/home/dmdba/dmdrs/agent/pids/DfmAgentServiceagent.pid
ExecStart=/home/dmdba/dmdrs/agent/DfmAgentServiceagent start
ExecReload=/home/dmdba/dmdrs/agent/DfmAgentServiceagent restart
ExecStop=/home/dmdba/dmdrs/agent/DfmAgentServiceagent stop
PrivateTmp=true
User=dmdba

[Install]
WantedBy=multi-user.target

生效命令

# 重载systemd配置
systemctl daemon-reload

# 清理残留pid文件
rm -f /home/dmdba/dmdrs/agent/pids/*.pid

# 重启服务
systemctl restart DfmAgentServiceagent.service

# 查看状态
systemctl status DfmAgentServiceagent.service

# 设置为自动启动
systemctl enable DfmAgentServiceagent.service

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服