有谁对systemd比较理解的,求帮忙看一个问题啊,急!

[复制链接]
查看11 | 回复2 | 2021-1-27 06:25:47 | 显示全部楼层 |阅读模式
当systemd遇到dbus,出现的问题。iMX6的arm环境上,系统启动时需要执行一段脚本,用来设置dbus的sessionbusaddress到环境变量中。脚本如下:
#!/bin/sh
rm/tmp/session_amgr
dbus-daemon--session--print-address--fork>/tmp/session_amgr
exportDBUS_SESSION_BUS_ADDRESS=`cat/tmp/session_amgr`
AudioManager-d

然后我有一个应用二进制文件hsaevideo,需要在dbussessionbus上发布服务。该存放在/geniviLife目录下,通过手工启动app,可以成功。通过systemd的方式启动报错,连接不到sessionbus。初步怀疑是systemd没有读取到DBUS_SESSION_BUS_ADDRESS这个环境变量导致的,有了解的人帮忙看看吗??谢谢!!
root@mx6q:/lib/systemd/scripts#systemctlstarthsaevideo
root@mx6q:/lib/systemd/scripts#systemctlstatushsaevideo-l
hsaevideo.service-LUCtestservice
Loaded:loaded(/etc/systemd/system/hsaevideo.service;disabled)
Active:failed(Result:signal)sinceThu1970-01-0101:49:35UTC;10sago
Process:2435ExecStart=/geniviLife/hsaevideo(code=killed,signal=TRAP)
MainPID:2435(code=killed,signal=TRAP)
Jan0101:49:35mx6qhsaevideo[2435]:**Message:----------videostartrunning!!-------------
Jan0101:49:35mx6qhsaevideo[2435]:**(process:2435):ERROR**:can'tconnectionsessionbus

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:25:47 | 显示全部楼层
exportDBUS_SESSION_BUS_ADDRESS=`cat/tmp/session_amgr`
这个变量只会在这个脚本里启动的进程中生效,
通过其他方式启动的进程,都不会得到这个环境变量。
回复

使用道具 举报

千问 | 2021-1-27 06:25:47 | 显示全部楼层
版主。。我已经把这个脚本source到/etc/profile里了,系统启动后这个脚本可以执行。然后我进入到app所在的目录,./hsaevideo手动启动是可以启动的,说明手动可以读到这个环境变量。----------------------但是我为这个app编写了systemd的service,通过systemctlstarthsaevideo.service,就不行。。求教该如何能让systemd也读到这个环境变量呢??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行