Câu trả lời:
Câu hỏi này đã được trả lời trong man 7 file-hierarchy
đó đi kèm với systemd (cũng có phiên bản trực tuyến ):
/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.
Về cơ bản, các tệp gửi trong các gói được tải xuống từ kho phân phối đi vào /usr/lib/systemd/
. Sửa đổi được thực hiện bởi quản trị viên hệ thống (người dùng) đi vào /etc/systemd/system/
.
Các đơn vị cụ thể hệ thống ghi đè các đơn vị được cung cấp bởi các nhà cung cấp. Sử dụng các phần bổ trợ, bạn chỉ có thể ghi đè các phần cụ thể của các tệp đơn vị, phần còn lại cho nhà cung cấp (phần bổ sung có sẵn kể từ khi bắt đầu systemd, nhưng chỉ được ghi lại đúng cách trong v219; xem man systemd.unit
).
Nếu bạn nhìn vào trang người đàn ông, man systemd.unit
nó có một bảng giải thích sự khác biệt. Đây là từ hệ thống 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 │ └────────────────────────┴─────────────────────────────┘
Khi họ nói "các gói đã cài đặt", họ đang đề cập đến bất cứ thứ gì được cài đặt thông qua RPM. Điều tương tự cũng có thể được giả sử đối với Debian / Ubuntu, trong đó tệp DEB sẽ là "gói đã cài đặt".
LƯU Ý: bảng trên từ hệ thống Debian / Ubuntu hơi khác nhau.
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
Bạn có thể cho biết các gói sở hữu tập tin đơn vị /usr/lib/systemd/system
nào như thế này trên hệ thống 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
Nếu chúng tôi làm điều tương tự /etc/systemd/system
, chúng tôi hy vọng sẽ không tìm thấy tệp nào thuộc sở hữu của RPM (thực tế là trường hợp trên hệ thống CentOS 7.x của tôi.):
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
Hãy nhớ rằng bạn có thể tìm thấy các tệp đi lạc thường xuyên bên dưới /usr/lib/systemd/system
, chẳng hạn như với 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
Co nhung nguoi khac.
Kỳ vọng là /usr/lib/systemd/system
một thư mục chỉ chứa các tệp đơn vị systemd được đặt bởi trình quản lý gói (YUM / DNF / RPM / APT / etc).
Các tập tin /etc/systemd/system
được đặt thủ công ở đây bởi nhà điều hành hệ thống để cài đặt phần mềm đặc biệt không ở dạng gói. Điều này sẽ bao gồm cài đặt phần mềm loại tarball hoặc tập lệnh phát triển tại nhà.
/etc/systemd/system
sẽ tạo ra lỗi nếu bạn che giấu nó : Failed to execute operation: Invalid argument
; systemd cố gắng thay thế tệp bằng symlink thành / dev / null. Không nói câu trả lời này là không chính xác, chỉ cần một cái gì đó để nhớ.
/lib/systemd/system
và /usr/lib/systemd/system
do đó tôi đã đặt câu hỏi riêng biệt unix.stackexchange.com/questions/550001/ Lỗi
/lib/systemd/system
vs/usr/lib/systemd/system
. Tôi rất vui vì tôi đã tìm thấy câu trả lời này.