【达梦数据库】dmagent may be running,but PID file could not be found!问题排查

文章讲述了在运行dmagent时遇到PID文件无法找到的问题,通过分析启动脚本和环境变量设置,发现-Dagent.pid.file参数未正确指定,从而导致pid文件未生成。解决方案是确保环境变量PID_FILE_PATH生效,使pid文件能被正确创建,从而使dmagent服务启动成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dmagent may be running,but PID file could not be found!问题排查

在使用dmagent 时,偶然出现问题如下图所示的报错,提示我的启动并没有成功,可是我的操作并没有啥问题呀。那究竟是哪里除了问题了呢
在这里插入图片描述
在经历一场手忙脚乱之后,我对启动脚本做了分析找到pid文件的前世今生,在理清逻辑之后,那么问题原因就非常好定位了

service.bat start
service DmAgentService start
/bin/systemctl stop DmAgentService.service
service/DmAgentService start
/root/dmagent-6.5.7/start.sh -d /root/dmagent-6.5.7/agent.ini
start.sh 脚本中并未声明 PID_FILE_PATH
环境变量 PID_FILE_PATH=/home/dmdba/dmdbms192/tool/dmagent/service/DmAgentService.pid
nohup java -Xms64m -Xmx2048m -cp /root/dmagent-6.5.7/lib/* -Dnoconsole=true -Ddameng.log.file=/root/dmagent-6.5.7/log4j.xml -Dagent.home=/root/dmagent-6.5.7 -Dagent.pid.file=/root/dmagent-6.5.7/service/DmAgentService.pid com.dameng.agent.Agent /root/dmagent-6.5.7/agent.ini
此时通过与故障环境做对比发现-Dagent.pid.file= 并没有指定pid 文件,即pid文未生成,可通过环境变量的强制使得脚本之间调用时PID_FILE_PATH 生效来绕过该问题
至此/DmAgentService.pid 文件生成,进程启动成功

解决办法也非常简单,就是在dmagent/service/DmAgentService 中将将48行复制一行 然后将在开头增加 export ,形成如下图的效果,即保证变量的生效 PID_FILE_PATH

在这里插入图片描述

至此问题解决完毕,因为是java启动时生成了pid 文件,那么我们在再去排查那个环境发现 -Dagent.pid.file= 确实指定了空,导致pid文件未生成。真可恶呀~~~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

气可鼓不可泄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值