IT Knowledge/기타

Linux Systemd 서비스 escape 문자(CentOS)

Seok. 2021. 12. 22. 22:50
반응형
Systemd 서비스 등록 방법

Service Path : /usr/lib/systemd/system/test.service

심볼릭링크 : /etc/systemd/system/mutil-user.target.wants/test.service

[Unit]
Description=Test Service
After=network.target

[Service]
User=testuser
Environment='JAVA_OPTS=-Dspring.profiles.active=live -DACCESS_LOG_ENABLED=true -DACCESS_LOG_PATTERN="%{X-Forwarded-For}I %{X-Real-Ip}I %a %l %u %t %r %s %b"'
ExecStart=/bin/java $JAVA_OPTS -jar /web/webapps/ROOT/test.jar
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

 

Linux에서 systemd 서비스를 생성하는데, 간혹 아래와 같은 오류를 받을 있습니다.

(CentOS 7)

오류 : "Failed to resolve unit specifiers"

Format error

 

원인 :  Systemd에서는 "%" escape 문자로 사용하기 때문이었습니다.

 

해결방안 : %문자를 사용하고자 한다면, escape 문자 "%" 앞에 "%"가 하나 더 필요합니다.

Ex) -DACCESS_LOG_PATTERN="%%{X-Forwarded-For}I %%{X-Real-Ip}I %%a %%l %%u %%t %%r %%s %%b"

반응형