通过systemd启动opensplice publisher不会发布数据



我在Ubuntu 20.04上有一个opensplice publisher,它是通过systemd启动的。

如果publisher通过systemd启动,那么数据不会被发布,但也不会在opensplice日志文件中报告错误或出现错误。

如果我从命令行运行它,或者如果我停止并重新启动服务,则发布者可以工作。

发布者和订阅者的QoS相同。

发布者和订阅者应用程序在不同的机器上运行。

网络中没有其他参与者。所有的机器都重新启动,重新启动的顺序不会改变观察到的行为。

systemd服务为:

[Unit]
Description=Publisher Process
Documentation=
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
WorkingDirectory=/opt/publisher/bin
ExecStart=/opt/publisher/bin/publisher.sh
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target

publisher.sh为:

#!/bin/bash
cd /opt/publisher/bin
source bashrc_local
# We just keep running the application (in case of a crash)
while true; do
./publisher
sleep 15
done

我有一个解决方案,感觉有点无聊。

#!/bin/bash
cd /opt/publisher/bin
source bashrc_local
timeout 30 ./remote_processor
killall remote_processor
# We just keep running the application (in case of a crash)
while true; do
./publisher
sleep 15
done

有什么想法,我可以删除我的工作周围?

编辑16 Sept 22

这个问题似乎是systemd启动顺序和依赖关系,因为我遇到了同样的问题,一个程序通过UDP发布数据,不使用DDS。

更改依赖项,以便在用户登录之前启动服务是没有帮助的。

检查您的环境变量,因为systemd不会在与bash控制台相同的环境中运行

特别是,您是否将OSPL_URI变量设置为指向配置?

如果使用商业版本,OSPL_HOME和ADLINK_LICENSE也需要设置

PATH变量是否包含您的OSPL共享库?

这些都是通过在bash会话中运行$OSPL_HOMErelease.com脚本来设置的

我倾向于手动将所需的添加到服务文件中如。环境= OSPL_URI =文件:///opt/ospl.xml

相关内容

  • 没有找到相关文章