이전 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>
.