답변:
이 질문은 man 7 file-hierarchy
systemd와 함께 제공됩니다 ( 온라인 버전도 있음 ).
/etc
System-specific configuration.
(…)
VENDOR-SUPPLIED OPERATING SYSTEM RESOURCES
/usr
Vendor-supplied operating system resources.
Usually read-only, but this is not required. Possibly
shared between multiple hosts. This directory should not
be modified by the administrator, except when installing
or removing vendor-supplied packages.
기본적으로 배포 저장소에서 다운로드 한 패키지로 제공되는 파일은로 이동합니다 /usr/lib/systemd/
. 시스템 관리자 (사용자)가 수행 한 수정은로 이동합니다 /etc/systemd/system/
.
시스템 별 장치는 공급 업체가 제공 한 장치보다 우선합니다. 드롭 인을 사용하면 단위 파일의 특정 부분 만 무시하고 나머지는 공급 업체에 남겨 둘 수 있습니다 (드롭 인은 시스템이 처음 시작된 이후에 사용 가능하지만 v219에서만 올바르게 문서화되었습니다 (참조 man systemd.unit
)).
매뉴얼 페이지를 보면 man systemd.unit
차이점을 설명하는 표가 있습니다. 이것은 CentOS 7.x 시스템에서 가져온 것입니다.
UNIT LOAD PATH Unit files are loaded from a set of paths determined during compilation, described in the two tables below. Unit files found in directories listed earlier override files with the same name in directories lower in the list. Table 1. Load path when running in system mode (--system). ┌────────────────────────┬─────────────────────────────┐ │Path │ Description │ ├────────────────────────┼─────────────────────────────┤ │/etc/systemd/system │ Local configuration │ ├────────────────────────┼─────────────────────────────┤ │/run/systemd/system │ Runtime units │ ├────────────────────────┼─────────────────────────────┤ │/usr/lib/systemd/system │ Units of installed packages │ └────────────────────────┴─────────────────────────────┘
"설치된 패키지"라고 말하면 RPM을 통해 설치된 것을 말합니다. DEB 파일이 "설치된 패키지"인 데비안 / 우분투에서도 마찬가지입니다.
참고 : 데비안 / 우분투 시스템의 위 표는 약간 다릅니다.
Table 1. Load path when running in system mode (--system). ┌────────────────────┬─────────────────────────────┐ │Path │ Description │ ├────────────────────┼─────────────────────────────┤ │/etc/systemd/system │ Local configuration │ ├────────────────────┼─────────────────────────────┤ │/run/systemd/system │ Runtime units │ ├────────────────────┼─────────────────────────────┤ │/lib/systemd/system │ Units of installed packages │ └────────────────────┴─────────────────────────────┘
/usr/lib/systemd/system
/usr/lib/systemd/system
CentOS / Fedora / RHEL 시스템 에서 어떤 패키지가 어떤 유닛 파일을 소유하는지 알 수 있습니다 :
$ rpm -qf /usr/lib/systemd/system/* |sort -u | head
abrt-2.1.11-50.el7.centos.x86_64
abrt-addon-ccpp-2.1.11-50.el7.centos.x86_64
abrt-addon-kerneloops-2.1.11-50.el7.centos.x86_64
abrt-addon-pstoreoops-2.1.11-50.el7.centos.x86_64
abrt-addon-vmcore-2.1.11-50.el7.centos.x86_64
abrt-addon-xorg-2.1.11-50.el7.centos.x86_64
accountsservice-0.6.45-7.el7.x86_64
acpid-2.0.19-8.el7.x86_64
alsa-utils-1.1.3-2.el7.x86_64
anaconda-core-21.48.22.134-1.el7.centos.x86_64
/etc/systemd/system
에 대해 동일한 작업을 수행하면 /etc/systemd/system
RPM이 소유 한 파일을 찾을 수 없습니다 (실제로 CentOS 7.x 시스템에 해당).
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
/usr/lib/systemd/system
Virtualbox (vboxadd *)와 같이 아래 에서 가끔 빗나간 파일을 찾을 수 있습니다 .
$ rpm -qf /usr/lib/systemd/system/* |sort -u | grep 'not owned'
file /usr/lib/systemd/system/initrd.target.wants is not owned by any package
file /usr/lib/systemd/system/shutdown.target.wants is not owned by any package
file /usr/lib/systemd/system/vboxadd.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-service.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-x11.service is not owned by any package
다른 것도 있습니다.
기대는 즉 /usr/lib/systemd/system
에만 패키지 관리자 (YUM / DNF / RPM / APT / 등)에 의해 거기에 넣어했다 systemd 유닛 파일을 포함해야 디렉토리입니다.
/etc/systemd/system
패키지 형태가 아닌 임시 소프트웨어 설치를 위해 시스템 운영자가 파일을 여기에 수동으로 배치합니다. 여기에는 tarball 유형의 소프트웨어 설치 또는 자체 제작 스크립트가 포함됩니다.
/etc/systemd/system
마스크하면 서비스 정의를 배치 하면 오류 가 발생합니다. Failed to execute operation: Invalid argument
; systemd는 파일을 / dev / null에 대한 심볼릭 링크로 바꾸려고 시도합니다. 이 답변이 정확하지 않다는 것만 기억하십시오.
/lib/systemd/system
하고 /usr/lib/systemd/system
, 따라서 내가 따로 질문을, unix.stackexchange.com/questions/550001/...
/lib/systemd/system
vs. 에 대해 궁금해서이 Google 검색 결과를 클릭하는 것을 꺼 렸습니다/usr/lib/systemd/system
. 이 답변을 찾았습니다.