【结帖】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
有没有可能是脚本执行太早,通信还没开启,您可试试加个延时等待,再执行脚本
系统启动后,在终端执行systemctl start **.service,也不行,直接执行/mnt/nandflash/user.sh,就可以。
已经反复验证了,感觉和时间关系不大。 我可以再试一下在脚本里加个延时。稍后回复结果 zhichao 发表于 2020-3-17 17:43
有没有可能是脚本执行太早,通信还没开启,您可试试加个延时等待,再执行脚本
已经验证,在user脚本里启动第一个进程前加了2s延时,两个进程间加了3s延时,没有什么效果。 xiaods-2 发表于 2020-3-18 09:21
已经验证,在user脚本里启动第一个进程前加了2s延时,两个进程间加了3s延时,没有什么效果。
问题解决:systemctl启动的进程,读不到系统环境变量,DBUS_SESSION_BUS_ADDRESS,造成dbus session无法建立,在systemctl启动脚本的添加环境变量
Environment=DBUS_SESSION_BUS_ADDRESS=你的变量值
后启动正常。
结帖!
页:
[1]