내가 읽어 유닛 파일 (사용자가 아닌 모드에서)에 대한 두 개의 폴더가 있음.
/usr/lib/systemd/system/: units provided by installed packages
/etc/systemd/system/: units installed by the system administrator
이 이해와 충돌하는 것은 https://unix.stackexchange.com/a/47715/33386 답변 입니다. 누군가 무슨 일이 일어나고 있는지 이해할 수 있도록 누락 된 정보를 입력 할 수 있습니까? ( 업데이트 : 답변이 업데이트되었으며 더 이상 이해가 충돌하지 않습니다. )
또한 스크립트가 폴더 내의 하위 폴더로 구성되어있는 것 같습니다 /etc/systemd/system/
.
getty.target.wants
multi-user.target.wants
다른 위치에는 다른 위치가 있다는 것을 읽었습니다. 이들은 사용자 별 서비스를위한 것 같습니다.
/usr/lib/systemd/user/ where services provided by installed packages go.
/etc/systemd/user/ where system-wide user services are placed by the system administrator.
~/.config/systemd/user/ where the user puts its own services.
2015-08-31 업데이트 :
다른 사람들을 위해 최근에 질문 한 관련 질문에 대한 링크가 있습니다. 시스템
단위로 실행되는 스크립트는 어디에 두어야합니까?
답변
시스템 장치 파일 을 넣는 가장 좋은 장소 : /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
)
사용자 단위와 모든 / 전역 사용자 단위 에는 차이가 있습니다 .
사용자 의존
$XDG_CONFIG_HOME/systemd/user
사용자 구성 ($XDG_CONFIG_HOME
설정된 경우에만 사용 )$HOME/.config/systemd/user
사용자 구성 ($XDG_CONFIG_HOME
설정되지 않은 경우에만 사용 )-
$XDG_RUNTIME_DIR/systemd/user
런타임 단위 ($XDG_RUNTIME_DIR
설정된 경우에만 사용 ) -
$XDG_DATA_HOME/systemd/user
홈 디렉토리에 설치된 패키지 단위 ($XDG_DATA_HOME
설정된 경우에만 사용 ) $HOME/.local/share/systemd/user
홈 디렉토리에 설치된 패키지 단위 ($XDG_DATA_HOME
설정되지 않은 경우에만 사용 )
--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
. 자세한 내용은 유닛로드 경로 섹션을 참조하십시오 man systemd.unit(5)
.
답변
필자는 3 개, 1 개, ntpd
2 개, 고정 이더넷 카드, 1 개 p0f
는 수동 OS 식별자 를 실행했습니다 . 나는 그들을 모두 넣었다 /etc/systemd/system
. systemd
NTP를 처리 할 수있을 것 같지만 그렇게 많이 사용하고 싶지는 않습니다.