0

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

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

/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

征求任何关于我做错或应该做的事情的指示。

4

2 回答 2

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 服务以使用包装脚本(保留参数)。

于 2014-08-04T01:08:14.717 回答
0

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

于 2015-06-09T01:45:11.997 回答