시스템 장치 파일 을 넣는 가장 좋은 장소 : /etc/systemd/system
[Install] 섹션에 대상을 추가하고 "어떻게 알고 있습니까?"를 읽으십시오. 자세한 내용은. 업데이트 : /usr/local/lib/systemd/system
또 다른 옵션입니다. 자세한 내용은 "회색 영역"을 참조하십시오. "
사용자 단위 파일 을 넣는 가장 좋은 장소는 : /etc/systemd/user
또는 $HOME/.config/systemd/user
권한과 상황에 따라 다릅니다.
진실은 시스템 단위 (또는 서문에서 말하는 것처럼 "단위 구성")는 어디든 갈 수 있다는 것입니다. systemctl daemon-reload
다음과 같은 이유로 인해 장치를 쉽게 찾을 수있는 위치에 배치 할 수 있습니다.
- 표준 위치를 사용한다는 것은 시스템 생성기가 발전기를 찾아 부팅 할 때 쉽게 활성화 할 수 있음을 의미합니다
systemctl enable
. 장치가 장치 종속성 트리 (장치 캐시)에 자동으로 추가되기 때문입니다.
- 권한이있는 사용자 만 지정된 영역에 쓸 수 있으므로 권한에 대해 생각할 필요가 없습니다.
어떻게 알 수 있습니까?
그리고 systemctl enable
심볼릭 링크를 어디에 만들지 정확히 어떻게 알 수 있습니까? [install]
섹션 아래의 장치 자체에서 하드 코딩합니다 . 보통 같은 라인이 있습니다
[Install]
WantedBy = multi-user.target
파일 시스템의 사전 정의 된 위치에 해당합니다. 이렇게하면 systemctl
이 단위가 단위 파일 그룹에 종속됨을 알 수 있습니다 multi-user.target
( "target"은 단위 종속성 그룹을 지정하는 데 사용되는 용어입니다. 모든 그룹을로 나열 할 수 있습니다 systemctl list-units --type target
). 대상과 함께로드 될 단위 파일 그룹이 targetname.target.wants
디렉토리에 있습니다. 이것은 단지 심볼릭 링크 (또는 실제)로 가득 찬 디렉토리입니다. 귀하의 경우 [Install]
절은 말한다 그것은이다 만에 심볼릭 링크가 존재하지 않는 경우 디렉토리, 그것은로드되지 않습니다. 시스템화 된 장치 생성기가 부팅 할 때 장치 파일을 종속성 트리 캐시에 추가하면 (를 사용하여 생성기를 수동으로 트리거 할 수 있음 ) 심볼릭 링크를 넣을 위치를 자동으로 알 수 있습니다 ( 이 경우 디렉토리에서)WantedBy
multi-user.target
multi-user.target.wants
systemctl daemon-reload
/etc/systemd/system/multi-user.target.wants/
당신이 그것을 활성화해야합니다.
매뉴얼의 요점 :
추가 장치는 장치로드 경로가 아닌 디렉토리에서 systemd ( "linked")로로드 될 수 있습니다. systemctl (1)에 대한 링크 명령을 참조하십시오.
systemctl에서 Unit File Commands를 찾으십시오.
단위 파일로드 경로
유닛 파일은 컴파일 중에 결정된 일련의 경로에서로드되며 아래 두 테이블에 설명되어 있습니다. 이전에 나열된 디렉토리에서 발견 된 단위 파일은 목록의 하단에있는 동일한 이름의 파일을 대체합니다.
변수 $SYSTEMD_UNIT_PATH
가 설정 되면이 변수 의 내용이 단위로드 경로를 대체합니다. $SYSTEMD_UNIT_PATH
빈 구성 요소 ( ":")로 끝나는 경우 일반적인 단위로드 경로가 변수의 내용에 추가됩니다.
표 1과 표 2 man systemd.unit
가 좋습니다.
시스템 모드에서 실행할 때 경로를로드하십시오 ( --system
).
/etc/systemd/system
로컬 구성
/run/systemd/system
런타임 단위
/usr/lib/systemd/system
설치된 패키지 단위
사용자 모드에서 실행할 때로드 경로 ( --user
)
사용자 단위와 모든 / 전역 사용자 단위 에는 차이가 있습니다 .
사용자 의존
--global
(모든 사용자들)
모든 사용자에게 적용되는 단위 (각 사용자가 소유 한 의미) 따라서 관리자가 부팅시 활성화하더라도 각 사용자는 이러한 서비스를 중지 할 수 있습니다.
/etc/systemd/user
모든 사용자를위한 로컬 구성 ( systemctl --global enable userunit.service
)
/usr/lib/systemd/user
모든 사용자를 위해 시스템 전체에 설치된 패키지 단위
/run/systemd/user
런타임 단위
회색 영역
한편, File Hierarchy Standard/etc
는 바이너리를 실행하지 않는 로컬 구성에 대해 파일 계층 표준을 지정합니다 . 반면에 /usr/local/
"로컬을 소프트웨어를 설치할 때 시스템 관리자가 사용 하도록 " 지정합니다 . 또한 모든 시스템 장치 파일은 아래에 있어야한다고 주장 할 수 있지만 (조직 목적 /usr/local/lib/systemd/system
이 아니라면) 패키지 관리자가 아닌 "소프트웨어"의 일부인 장치 파일을위한 것입니다. 시스템 전체의 해당 시스템 사용자 단위는 아래에있을 수
/usr/local/lib/systemd/user
있습니다.
/etc/systemd/system
어디 당신이 스크립트를 넣어, 팩맨 의 패키지 스크립트를 박았/usr/lib/systemd/system
및 발급은systemctl enable foo.service
에서 심볼릭 링크를 생성/usr
하는/etc
...