xiaods-2 发表于 2020-3-17 16:55:14

【结帖】systemctl启动dbus问题?

本帖最后由 xiaods-2 于 2020-3-18 10:12 编辑

开发板采用systemd启动方式,定义了一个脚本user.sh,用于启动两个应用进程;
在telnet终端直接执行user.sh脚本,两个进程间能够正常进行DBUS通信;
而用systemctl执行user.sh脚本时,两个进程能启动,但是无法进行DBUS通信?
systemctl启动脚本如下:

Description=MySQL Server
After=mysqld.service


Type=forking
BusName=emsb.manger.service
PermissionsStartOnly=true
ExecStart=/bin/sh /mnt/nandflash/user.sh
LimitNOFILE = 5000


WantedBy=multi-user.target

zhichao 发表于 2020-3-17 17:43:47

有没有可能是脚本执行太早,通信还没开启,您可试试加个延时等待,再执行脚本

xiaods-2 发表于 2020-3-18 09:16:38

zhichao 发表于 2020-3-17 17:43
有没有可能是脚本执行太早,通信还没开启,您可试试加个延时等待,再执行脚本

系统启动后,在终端执行systemctl start **.service,也不行,直接执行/mnt/nandflash/user.sh,就可以。
已经反复验证了,感觉和时间关系不大。   我可以再试一下在脚本里加个延时。稍后回复结果

xiaods-2 发表于 2020-3-18 09:21:46

zhichao 发表于 2020-3-17 17:43
有没有可能是脚本执行太早,通信还没开启,您可试试加个延时等待,再执行脚本

已经验证,在user脚本里启动第一个进程前加了2s延时,两个进程间加了3s延时,没有什么效果。

xiaods-2 发表于 2020-3-18 10:11:20

xiaods-2 发表于 2020-3-18 09:21
已经验证,在user脚本里启动第一个进程前加了2s延时,两个进程间加了3s延时,没有什么效果。

问题解决:systemctl启动的进程,读不到系统环境变量,DBUS_SESSION_BUS_ADDRESS,造成dbus session无法建立,在systemctl启动脚本的添加环境变量
Environment=DBUS_SESSION_BUS_ADDRESS=你的变量值
后启动正常。

结帖!
页: [1]
查看完整版本: 【结帖】systemctl启动dbus问题?