systemd 单元文件 - 条件参数

systemd 单元文件 - 条件参数

我正在尝试将旧的初始化脚本转换为 systemd 单元文件。

我的初始化脚本提供了一个配置文件,并根据某些变量将一些参数添加到守护程序中。

init 脚本执行与此类似的操作:

## My daemon
DAEMON="/usr/bin/my_daemon"

## These arguments are fixed:
DAEMON_ARGS="-a -b -c"

# Called on 'service my_service start'
do_start() {
    ## Source config file
    . /etc/me/config_file

    ## If FOO is defined, add -x $FOO to arguments
    if [ -n "$FOO" ]; then
        DAEMON_ARGS="$DAEMON_ARGS -x $FOO"
    fi

    ## Start the daemon
    start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_ARGS
}

如何使用单元文件达到相同的效果?

编辑1:

这是一个骨架单元文件:

[单元]
描述=我的服务
想要=local-fs.target
需要=local-fs.target

[服务]
PIDfile=/var/run/daemon.pid
类型=分叉
ExecStart=/usr/bin/my_daemon -a -b -c

[安装]
必需者=basic.target
WantedBy=basic.target

我想将参数传递-x $FOO给 中的守护进程ExecStart,但仅当$FOO在某些配置文件(比方说 /etc/me/config_file)中定义时才有效。

我知道我可以阅读EnvironmentFile,所以我可以这样做:

[服务]
环境文件=/etc/me/config_file
ExecStart=/usr/bin/my_daemon -a -b -c -x $FOO

FOO可能没有定义,所以-x参数将没有值......并且会发生错误。

$FOO是一个由其他服务读取的选项,因此制作FOO=-x <value>.

相关内容