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

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

upstart현재 사용하기 위해 과제를 다시 작성하고 systemd있는데 다음 사항을 알고 싶습니다.

"기본" 위치는 어디입니까?EnvironmentFile?

들어갈 수도 있다/etc/environment

/etc/systemd/service.or 의 다른 모든 서비스 파일과 함께 있을 수 있지만 /run/systemd/system해당 위치에는 /lib/systemd/system다른 내용이 표시되지 않습니다 .EnvironmentFileService

나도 논쟁 /etc/default/했거나/etc/<PACKAGE_NAME>

그것을 넣을 문서화된 "정상적인" 장소가 없습니다. 내가 본 많은 예제는 재부팅 시 지워지고 파일은 부팅이나 재부팅 시 참조될 수 /tmp/<FILE_NAME>있도록 보존되어야 하기 때문에 이해가 되지 않는 것 같습니다./tmpService


배경: 설치하기 전에 설치 전(관리자 스크립트를 사용하여) 데비안 패키지를 구축하고 EnvironmentFile있으며 서비스가 시작/다시 시작될 때마다 이 파일을 사용할 수 있어야 한다는 것을 알고 있습니다.

답변1

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

그래서 하나도 없습니다.

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

결국 기본 systemd 메커니즘은 서비스 단위 파일 자체이며, 여기서 환경 변수는 Environment=키를 통해 설정됩니다. 그들의 의견으로는 관리자가 정의한 변수나 시스템별 변수를 사용하여 서비스 환경을 사용자 정의하는 것은 단순히 .conf장치의 스니펫 파일을 넣은 다음 더 많은 키를 사용하여 다른 환경 변수를 설정하는 문제일 뿐입니다 Environment=.

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

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

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

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

보너스 콘텐츠

daemontools 세계에는 환경이 있습니다.목차물론 읽으려면 envdir/ 명령을 사용하십시오. s6-envdirdaemontools의 표준이나 요구사항은 아니지만,관습일부 도구와 일관되게 사용할 수 있는 접근 방식은 환경 디렉터리의 이름을 지정하고 env프로그램 및 기타 콘텐츠와 함께 서비스 디렉터리에 위치하는 것입니다.run

관련 정보