systemd 단위 파일 - 조건부 매개변수

systemd 단위 파일 - 조건부 매개변수

이전 init 스크립트를 시스템 단위 파일로 변환하려고 합니다.

내 초기화 스크립트는 구성 파일을 제공하고 일부 변수를 기반으로 데몬에 일부 매개변수를 추가합니다.

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

[제공하다]
PID파일=/var/run/daemon.pid
유형=포크
ExecStart=/usr/bin/my_daemon -a -b -c

[설치하다]
필수=basic.target
WantedBy=basic.target

-x $FOO의 데몬에 매개변수를 전달하고 싶지만 일부 구성 파일(예: /etc/me/config_file)에 정의된 ExecStart경우에만 가능합니다 .$FOO

나는 읽을 수 있다는 것을 알고 있으므로 EnvironmentFile다음을 수행할 수 있습니다.

[제공하다]
환경 파일=/etc/me/config_file
ExecStart=/usr/bin/my_daemon -a -b -c -x $FOO

하지만 FOO정의되지 않았을 수도 있으므로 -x매개변수에는 값이 없으며... 오류가 발생합니다.

$FOO다른 서비스에서 읽어서 만든 옵션입니다 FOO=-x <value>.

관련 정보