Puncte:2

Dist-upgrade înlocuiește fișierele de serviciu?

drapel my

Recent am observat un server performant apt-get update && apt-get dist-upgrade

Printre altele, docker a fost actualizat și repornit.

Cu toate acestea, am observat că unele modificări pe care le-am făcut anterior fișierului de serviciu au dispărut. Dosarul la /lib/systemd/system/docker.service pare să fi fost resetat.

Este posibil? Nu-mi amintesc dacă am fugit daemon-reload dupa aceste modificari.

EDIT: Pentru a fi clar: mă întreb dist-upgrade a eliminat practic fișierul de serviciu și l-a înlocuit cu unul implicit?

Și face daemon-reload previne acest lucru pe viitor?

EDIT2: Ok, se pare sudo systemctl edit docker.service este calea de urmat si realizeaza a daemon-reload la salvare.

muru avatar
drapel us
Răspunde asta la întrebarea ta? [Cum anulez sau configurez serviciile systemd?](https://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services)
drapel my
@muru Nu, întrebarea mea este mai degrabă „dist-upgrade-ul a înlocuit forțat întregul fișier de serviciu cu unul nou, ignorându-l pe cel existent?”
drapel my
@muru Ah, am citit puțin mai departe și face detalii pentru a nu edita fișierele /lib/systemd/. Da, asta va fi.
Puncte:9
drapel in

Nu editați fișierele în /lib/systemd/ sau /usr/share/systemd deoarece acestea vor fi suprascrise la actualizări.

În schimb, copiați fișierul în /etc/systemd/ și faceți modificările acolo.

Directorul /etc/ (cel puțin pentru systemd) este considerat locul pentru stocarea fișierelor de configurare locale. Toate celelalte directoare /**/systemd/ sunt considerate surse de fișiere implicite și eșantion de configurare care ar trebui înlocuite la orice actualizare.

Un alt motiv pentru a nu edita aceste fișiere de configurare furnizate de pachet este că, dacă le copiați în /etc/systemd/... și le editați și faceți o greșeală, puteți întotdeauna compara cu fișierul original.

systemctl daemon-reload nu impiedica nimic. Îi spune doar systemd să-și reexamineze toate configurațiile și să folosească orice s-a schimbat.

bac0n avatar
drapel cn
cred că `/usr/local/lib/systemd/system/` este mai bun decât `/etc/systemd...` [1](https://unix.stackexchange.com/questions/224992/where-do-i- pune-my-systemd-unit-file)
drapel et
@bac0n locația sancționată de systemd este `/etc/systemd`. Acesta este ceea ce folosește `systemctl edit`.
user10489 avatar
drapel in
Nici pe cel din /usr/local/lib/systemd nu l-aș edita, l-aș copia și în /etc/systemd înainte de editare.
bac0n avatar
drapel cn
@StephenKitt, ceea ce tu [sugerezi](https://steveazz.xyz/micro/systemd-drop-in/) este ceva complet diferit și merită propriul răspuns și chiar să fie cel preferat, tot, cred, copierea fișierelor în `/etc/systemd/` nu este recomandat, de exemplu, pierdeți capacitatea de a *masca* unitățile.
user10489 avatar
drapel in
@bac0n: De fapt, te înșeli. Mascați unitățile *prin* introducerea unui fișier gol în /etc/systemd/, practic, înlocuind sistemul implicit cu un fișier gol. Dacă oricum puneți un fișier real (negol) acolo, puteți dezactiva unitatea în loc să o mascați.
bac0n avatar
drapel cn
dar unde pui fisierul editat?
user10489 avatar
drapel in
Fișierul editat merge în /etc/systemd/system. Aceasta maschează implicit cu un fișier de înlocuire. Dacă doriți să dezactivați temporar unitatea, puteți să o dezactivați pur și simplu, fără a fi nevoie să o mascați.
user10489 avatar
drapel in
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/126878/discussion-between-user10489-and-bac0n).
drapel et
@bac0n este deja acoperit în [răspunsul muru aici](https://askubuntu.com/a/659268/412264), nu are rost să-l dublezi IMO ;-).
Puncte:-1
drapel cn

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)..
user10489 avatar
drapel in
Conform http://0pointer.de/blog/projects/three-levels-of-off, systemd acceptă „trei niveluri de oprire”: serviciu oprit, serviciu dezactivat, serviciu mascat. Mascat este pentru atunci când *nu* doriți să începeți serviciul. Nu are sens să ai un fișier personalizat pentru un serviciu pe care nu vrei să-l pornești niciodată. Soluția ta este doar să încerci să iei prăjitura și să-l mănânci și tu.
user10489 avatar
drapel in
Directorul /usr/local/lib/systemd/system/ este ținta programelor instalate manual pentru a-și instala serviciile. În timp ce o actualizare normală a sistemului nu va suprascrie acest lucru, reexecutarea make install pentru programele care au serviciu îl va suprascrie. Directorul corect pentru fișierele de servicii personalizate pe care să le instaleze administratorul este /etc/system/systemd
bac0n avatar
drapel cn
@user10489 creează un serviciu și pune-l în `/etc/systemd/system` și `systemctl mask` your.service ce se întâmplă?
user10489 avatar
drapel in
Ce se întâmplă dacă tastați systemctl edit --full your.service? Acesta este ceea ce intenționează systemd.
bac0n avatar
drapel cn
Da, asta va da aproximativ aceeasi bataie de cap, pot sa inteleg ca dosarul trebuie sa inceapa de undeva, asa ca ii iert de data asta ;-)
user10489 avatar
drapel in
Este doar o bătaie de cap pentru tine, aceasta este soluția așteptată și standard.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.