시스템화된 사람들은 환경 파일을 좋아하지 않습니다.

시스템화된 사람들은 환경 파일을 좋아하지 않습니다.

아래 예시와 같이 systemd 서비스를 구성할 수 있나요? 나는 깨닫고 싶다사용자,그룹그리고목차/etc/default/service와 같은 추가 파일에서 구성합니다.

내 대상 환경은 OpenSuse Linux 15.1입니다. 시스템 234

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

[Service]
User=$USER
Group=$GROUP
Type=simple
WorkingDirectory=$DIR
ExecStart=/opt/123/service.sh start
ExecStop=/opt/123/service.sh stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

추신: service.sh에서 구성 파일 구문 분석을 수행하고 사용자별 작업을 실행하는 것은 여전히 ​​가능합니다. 하지만 간단하고 직접적인 방법을 알고 싶습니다.

답변1

시스템화된 사람들은 환경 파일을 좋아하지 않습니다.

/etc/default/example이 경우에는 물론 환경 파일입니다.

수년에 걸쳐 일부 systemd 사람들은 환경 파일이 애초에 systemd에 제공해서는 안 되는 메커니즘이라고 공개적으로 밝혔습니다.

결국 기본 systemd 메커니즘은 서비스 단위 파일 자체입니다. 그들의 관점에서는 관리자 정의 또는 시스템별 콘텐츠 사용자 정의 서비스를 사용하면 단순히 .conf장치의 조각 파일에 넣어 기본 장치 파일의 키를 추가하거나 교체할 수 있습니다.

매개변수화된 설정이 포함된 패키지 정의를 사용하여 사용자를 위한 기본 서비스 단위를 생성하는 것은 많은 패키지와 마찬가지로 템플릿에서 실제 서비스 단위를 생성하기 위한 텍스트 처리 및 매크로 대체의 문제입니다.

(하지만 솔직히 콘텐츠를 EnvironmentFile=.[…]/etc/sysconfig정말로 사라져야 할 붉은 증오주의 도 있습니다 . 전체 개념에 결함이 있습니다. 새로운 것을 추가하면 /run/sysconfig/확실히 더 나빠질 것입니다. )

EnvironmentFile=아마 처음부터 추가하지 말았어야 했을 겁니다. 패키저는 유닛 파일이 관리 구성의 적용을 받고 관리 구성으로 취급되어야 하며, 유닛 파일의 구성을 별도의 파일로 분할하는 것은 EnvironmentFiles=불필요한 간접적인 매우 무의미한 게임이라고 오해합니다.

— 레나르트 페틀링(2015-12-09)."환경 파일"에 대한 쿼리. systemd - 개발.

를 사용하는 EnvironmentFile=것은 거의 항상 나쁜 생각이며 패키지 제작자가 우리가 제거하려는 바로 그 광기를 다시 도입하도록 유도하므로 결코 추가해서는 안 됩니다 /etc/default/./etc/sysconfig/
— 레나르트 페틀링(2015-07-22).전체 유닛 파일에 변수를 추가하는 것을 고려해 보세요.. 시스템 오류 #618. GitHub.

관련 정보