我正在尝试将旧的初始化脚本转换为 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>
.