Yanıtlar:
Bu soru zaten man 7 file-hierarchy
systemd ile gelen cevaplanmıştır (ayrıca çevrimiçi versiyon da vardır ):
/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.
Temel olarak, dağıtım havuzundan indirilen paketlerde bulunan dosyalar içine girilir /usr/lib/systemd/
. Sistem yöneticisi (kullanıcı) tarafından yapılan değişiklikler girilir /etc/systemd/system/
.
Sisteme özgü birimler satıcılar tarafından sağlanan birimleri geçersiz kılar. Eklentileri kullanarak, birim dosyalarının yalnızca belirli bölümlerini geçersiz kılabilir, gerisini satıcıya bırakabilirsiniz (sisteme girmenin başlangıcından beri açılanlar mevcuttur, ancak yalnızca v219'da doğru bir şekilde belgelenmiştir; bkz. man systemd.unit
).
Man sayfasına bakarsanız man systemd.unit
aradaki farkları açıklayan bir tablo vardır. Bu bir CentOS 7.x sistemindendir.
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 │ └────────────────────────┴─────────────────────────────┘
"Kurulu paketler" deyince RPM aracılığıyla kurulmuş herhangi bir şeyden bahsediyorlar. Aynısı, DEB dosyasının "kurulu paket" olduğu Debian / Ubuntu için de varsayılabilir.
NOT: Yukarıdaki tablo Debian / Ubuntu sisteminden biraz farklıdır.
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
Bir CentOS / Fedora / RHEL sisteminde hangi paketlerin hangi dosyalara sahip olduğunu kendiniz söyleyebilirsiniz :
$ 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
Aynı şeyi yaparsak, /etc/systemd/system
bir RPM'ye ait hiçbir dosya bulamayacağımızı umarız (Aslında CentOS 7.x sistemimde geçerli olan budur.):
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
/usr/lib/systemd/system
Virtualbox (vboxadd *) ile olduğu gibi ara sıra başıboş dosyaları bulabileceğinizi unutmayın :
$ 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
Diğerleri var.
Beklenti, /usr/lib/systemd/system
yalnızca paket yöneticisinin (YUM / DNF / RPM / APT / etc) yerleştirdiği sistemd birim dosyalarını içermesi gereken bir dizin olmasıdır.
Dosyalar /etc/systemd/system
burada paket şeklinde olmayan geçici yazılım kurulumları için sistem operatörü tarafından elle yerleştirilir. Bu, tarball tipi yazılım kurulumlarını veya evde yetiştirilen komut dosyalarını içerir.
/etc/systemd/system
maskelerseniz bir hata oluşturur Failed to execute operation: Invalid argument
:; systemd, dosyayı / dev / null dizinine bir link ile değiştirmeye çalışır. Bu cevabı yanlış söylememek, sadece hatırlanması gereken bir şey.
/lib/systemd/system
ve /usr/lib/systemd/system
bu yüzden soruyu ayrı ayrı sordum unix.stackexchange.com/questions/550001/…
/lib/systemd/system
vs./usr/lib/systemd/system
. Bu cevabı bulduğuma sevindim.