Jawaban:
Pertanyaan ini sudah dijawab man 7 file-hierarchy
yang dilengkapi dengan systemd (ada juga versi online ):
/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.
Pada dasarnya, file yang dikirimkan dalam paket yang diunduh dari repositori distribusi masuk /usr/lib/systemd/
. Modifikasi yang dilakukan oleh administrator sistem (pengguna) masuk ke /etc/systemd/system/
.
Unit khusus sistem menimpa unit yang disediakan oleh vendor. Menggunakan drop-in, Anda hanya dapat mengganti bagian tertentu dari file unit, menyerahkan sisanya kepada vendor (drop-in tersedia sejak awal systemd, tetapi hanya didokumentasikan dengan benar di v219; lihat man systemd.unit
).
Jika Anda melihat halaman manual man systemd.unit
itu memiliki tabel yang menjelaskan perbedaan. Ini dari sistem 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 │ └────────────────────────┴─────────────────────────────┘
Ketika mereka mengatakan "paket yang diinstal" mereka merujuk pada apa pun yang diinstal melalui RPM. Hal yang sama dapat diasumsikan untuk Debian / Ubuntu juga di mana file DEB akan menjadi "paket yang diinstal".
CATATAN: tabel di atas dari sistem Debian / Ubuntu sedikit berbeda.
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
Anda dapat memberi tahu paket apa yang memiliki file unit /usr/lib/systemd/system
seperti ini pada sistem 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
Jika kami melakukan hal yang sama terhadap /etc/systemd/system
, kami berharap tidak menemukan file yang dimiliki oleh RPM (yang sebenarnya terjadi pada sistem CentOS 7.x saya.):
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
Ingatlah bahwa Anda mungkin menemukan file sesekali /usr/lib/systemd/system
terselubung di bawah , seperti dengan 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
Ada yang lain.
Harapannya adalah bahwa itu /usr/lib/systemd/system
adalah direktori yang seharusnya hanya berisi file unit systemd yang ditempatkan di sana oleh manajer paket (YUM / DNF / RPM / APT / dll).
File dalam /etc/systemd/system
ditempatkan secara manual di sini oleh operator sistem untuk instalasi perangkat lunak ad-hoc yang tidak dalam bentuk paket. Ini akan mencakup instalasi perangkat lunak jenis tarball atau skrip yang dikembangkan sendiri.
/etc/systemd/system
menghasilkan kesalahan jika Anda menutupinya: Failed to execute operation: Invalid argument
; systemd mencoba mengganti file dengan symlink ke / dev / null. Tidak mengatakan jawaban ini salah, hanya sesuatu yang perlu diingat.
/lib/systemd/system
dan /usr/lib/systemd/system
, oleh karena itu saya mengajukan pertanyaan secara terpisah unix.stackexchange.com/questions/550001/…
/lib/systemd/system
vs/usr/lib/systemd/system
. Saya senang saya menemukan jawaban ini.