【发布时间】:2019-11-26 09:57:26
【问题描述】:
我有以下问题:我有一个带有 Raspbian Buster Lite 操作系统的 Raspberry Pi。我想用树莓派的启动自动启动一个程序。
我正在通过在文件夹 /etc/systemd/system 中创建服务来尝试使用 systemd。我要启动的程序是一个用于启动 OSGi-Bundles 的 Apache Felix 文件。如果我在 Raspberry Pi 上启动此文件,一切正常。通过使用 systemd 启动程序,服务处于活动状态,但 Felix 文件的包在每个包启动后立即停止。我希望捆绑包保持活跃。我尝试了很多东西,这里有一个例子:
[Unit]
Description=Service to run felix
[Service]
User=module
Group=module
Type=simple
WorkingDirectory=/home/module/apache-felix-6.0.2/apache-felix-6.0.2
ExecStart=/home/module/apache-felix-6.0.2/apache-felix-6.0.2/startFelix.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
这样,如上所述,服务处于活动状态,但捆绑包在成功启动后全部停止。我还尝试使用分叉和 RemainAfterExit = yes。还是同样的问题。经过研究,我发现使用服务类型 oneshot 和 RemainAfterExit = yes 服务在启动后保持活动状态。但这并没有解决问题,因为尽管服务仍处于活动状态,但 Felix 文件的捆绑包已停止。我还尝试将 KillMode 设置为 none 并将 KillSignal 设置为默认操作是忽略信号的信号,但它也不起作用。我将 KillSignal 设置为 SIGCHLD。
这里是 startFelix.sh 脚本:
#!/bin/bash
java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8182 -Dlogback.configurationFile=conf/logback.xml -jar ./bin/felix.jar
如何保持捆绑包处于活动状态?有人有想法吗?
【问题讨论】:
-
您确定脚本
startFelix.sh没有崩溃吗?因为你的 systemd 单元对我来说看起来不错? -
@tryingToLearn 是的,我在启动服务后查看了输出,脚本 startFelix.sh 启动正常且正常,但立即停止。如果我手动启动脚本,一切正常,直到我停止它才会停止。
-
能否也添加startFelix.sh的内容?
-
@ChristianSchneider 完成了
标签: ubuntu raspberry-pi osgi systemd apache-felix