Risposte:
Questa domanda ha già una risposta in man 7 file-hierarchy
cui viene fornito con systemd (esiste anche una versione 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.
Fondamentalmente, i file spediti in pacchetti scaricati dal repository di distribuzione vanno in /usr/lib/systemd/
. Le modifiche apportate dall'amministratore di sistema (utente) entrano in /etc/systemd/system/
.
Le unità specifiche del sistema sostituiscono le unità fornite dai fornitori. Utilizzando i drop-in, è possibile sovrascrivere solo parti specifiche dei file di unità, lasciando il resto al fornitore (i drop-in sono disponibili sin dall'inizio di systemd, ma sono stati correttamente documentati solo nella v219; vedere man systemd.unit
).
Se guardi la pagina man man systemd.unit
ha una tabella che spiega le differenze. Questo proviene da un sistema 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 │ └────────────────────────┴─────────────────────────────┘
Quando dicono "pacchetti installati" si riferiscono a tutto ciò che è stato installato tramite un RPM. Lo stesso può essere assunto anche per Debian / Ubuntu dove un file DEB sarebbe il "pacchetto installato".
NOTA: la tabella sopra da un sistema Debian / Ubuntu è leggermente diversa.
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
Puoi dire quali pacchetti possiedono i file di unità in /usr/lib/systemd/system
questo modo su un sistema 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
Se facciamo lo stesso contro /etc/systemd/system
, non ci aspetteremmo di trovare file di proprietà di un RPM (che è il caso del mio sistema CentOS 7.x):
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
Tieni presente che potresti trovare file randagi occasionali sotto /usr/lib/systemd/system
, come con 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
Ce ne sono altri
L'aspettativa è che si /usr/lib/systemd/system
tratti di una directory che dovrebbe contenere solo file di unità di sistema che sono stati inseriti dal gestore pacchetti (YUM / DNF / RPM / APT / etc).
I file in /etc/systemd/system
vengono inseriti manualmente dall'operatore del sistema per le installazioni di software ad hoc che non sono in forma di pacchetto. Ciò include installazioni di software di tipo tarball o script sviluppati in casa.
/etc/systemd/system
genera un errore se si mascherarlo: Failed to execute operation: Invalid argument
; systemd tenta di sostituire il file con un collegamento simbolico a / dev / null. Non dire questa risposta non è corretta, solo qualcosa da ricordare.
/lib/systemd/system
e /usr/lib/systemd/system
, pertanto, ho posto la domanda separatamente unix.stackexchange.com/questions/550001/…
/lib/systemd/system
vs./usr/lib/systemd/system
. Sono contento di aver trovato questa risposta.