用于单声道服务的systemd配置

时间:2014-08-03 02:11:28

标签: mono systemd

我可以在Fedora 19上使用mono-service作为守护进程运行单声道应用程序。

要设置一些环境变量,我首先必须执行脚本

/opt/mono/env.sh

然后我可以使用

将单声道应用程序作为守护程序运行
mono-service -d:/opt/mediabrowser-server/ -m:mediabrowser-server -n:mediabrowser-server /opt/mediabrowser-server/MediaBrowser.Server.Mono.exe -programdata /var/opt/mediabrowser-server/

我希望应用程序能够作为具有systemd配置的服务自动启动。我的尝试没有成功

我的配置是

[Unit]
Description=Media Browser 3

[Service]
User=smitopher
Group=smitopher
ExecStart=/opt/mono/bin/mono-service -d:/opt/mediabrowser-server/ -m:mediabrowser-server -n:mediabrowser-server /opt/mediabrowser-server/MediaBrowser.Server.Mono.exe -programdata /var/opt/mediabrowser-server/
Type=forking
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target

用户已将脚本添加到.bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
. /opt/mono/env.sh
PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

有关我错误或应该做的事情的任何指示都会被征求。

2 个答案:

答案 0 :(得分:0)

systemd不会运行用户的bash rc。您需要使用Environment =指令设置环境变量。或者,使用包装器脚本/opt/mono/bin/mono-service-wrapper.sh:

#! /bin/sh

. /opt/mono/env.sh

exec /opt/mono/bin/mono-service $@

然后只需更改systemd服务以使用包装器脚本(保留参数)。

答案 1 :(得分:0)

在systemd单元中使用EnvironmentFile=加载包含环境变量的文件。