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"
반응형