Sunt cateva dezavantaje de depozitare fișiere obișnuite în /etc/systemd/system
, nu din cauza sistemului în sine, ci pentru că systemctl
locuiește în această locație. Plasarea fișierelor obișnuite în acest director va distruge o parte din funcționalitatea systemctl, în acest caz, capacitatea de a vă masca .service și nu există niciun motiv să credem că alte aplicații vor gestiona acest lucru diferit. Acum, systemd are un set predefinit de căi de căutare unităților, dintre care majoritatea sunt preocupați de distributie, acest lucru face ca locațiile în care vă puteți plasa .service se limitează practic la (sau cel puțin până când acest lucru este rezolvat):
/usr/local/lib/systemd/system
Acest lucru funcționează excepțional de bine și fără pierderi de funcționalitate:
# cp -a hello-world.service /usr/local/lib/systemd/system
„hello-world.service” -> „/usr/local/lib/systemd/system/hello-world.service”
# systemctl daemon-reload
# dpkg -i hello-world_1.0-1_all.deb
Se selectează pachetul neselectat anterior hello-world.
(Se citește baza de date... 396452 fișiere și directoare instalate în prezent.)
Se pregătește despachetarea hello-world_1.0-1_all.deb...
Se despachetează hello-world (1.0)...
Se configurează hello-world (1.0)...
S-a creat un link simbolic /etc/systemd/system/multi-user.target.wants/hello-world.service â /usr/local/lib/systemd/system/hello-world.service.
# systemctl mask hello-world
S-a creat un link simbolic /etc/systemd/system/hello-world.service â /dev/null.
aceeași ordine cronologică se aplică și pentru drop-in-uri, unde /etc
a avea prioritate asupra /alerga
care la rândul lor au prioritate asupra /lib
... și așa mai departe, drop-in-urile cu nume diferite vor fi aplicate în ordine lexicografică, indiferent de locație. Dacă aveți directive care se suprapun, ultima va avea prioritate:
: systemctl cat hello-world
# /lib/systemd/system/hello-world.service
[Unitate]
Descriere=Bună lume (lib).
[Serviciu]
Type=onehot
ExecStart=/opt/bin/hello.sh lib
[Instalare]
WantedBy=multi-user.target
# /usr/local/lib/systemd/system/hello-world.service.d/10-local.conf
[Unitate]
Descriere=Bună lume (local).
[Serviciu]
ExecStart=
ExecStart=/opt/bin/hello.sh local
# /etc/systemd/system/hello-world.service.d/override.conf
[Serviciu]
ExecStart=
ExecStart=/opt/bin/hello.sh etc
: systemctl start hello-world
28 iunie 15:20:24 betazoid systemd[1]: Începe Hello world (local)....
28 iunie 15:20:24 betazoid salut[402381]: salut etc
28 iunie 15:20:24 betazoid systemd[1]: hello-world.service: Succeeded.
28 iunie 15:20:24 betazoid systemd[1]: Terminat Bună lume (local)..