Відповіді:
На це питання вже дано відповідь, в 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. Те ж саме можна припустити і для Debian / Ubuntu, а також де DEB-файл буде "встановленим пакетом".
ПРИМІТКА: наведена вище таблиця в системі Debian / Ubuntu дещо відрізняється.
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 / тощо).
Файли /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./usr/lib/systemd/system
. Я радий, що знайшов цю відповідь.