Fișierele de serviciu au .serviciu extensii și conțin instrucțiunile cerute de systemd pentru a gestiona un serviciu.
The systemd init system gestionează inițializarea sistemului folosind Unitate . O unitate este un obiect care îndeplinește o sarcină sau o acțiune, cum ar fi gestionarea unui serviciu, care implică controlul și monitorizarea acestuia. Aceste unități sunt în esență fișiere numite fișiere de serviciu care includ dependențe și comenzi de unități. Aceste fișiere sunt cruciale pentru controlul eficient al proceselor de fundal și gestionarea resurselor.
În ghid, voi explora fișierul de serviciu systemd, structura acestuia și principalele directive care controlează serviciul.
Când lucrați cu systemd, termenii fișier de serviciu systemd și fișier unitar systemd sunt adesea folosite interschimbabil deoarece din punct de vedere tehnic se referă la același lucru.
Ce este Systemd Service File
Pe Linux, systemd gestionează serviciile folosind fișierele de serviciu care conțin instrucțiunile de configurare, astfel încât systemd să poată înțelege și executa.
Pentru a lista unitățile, utilizați systemctl cu – lista-unități comanda.
systemctl --lista-unități
Pentru a citi fișierul de serviciu al oricărui serviciu, utilizați pisică comanda cu calea fișierului.
pisică [ / cale-fișier-serviciu ]De exemplu, pentru a vedea fișierul de serviciu al ssh.service utilizați comanda dată.
pisică / lib / systemd / sistem / ssh.service
Anatomia fișierului de serviciu Systemd
În general, fișierele de unitate de serviciu systemd conțin trei secțiuni.
- Unitate
- Serviciu
- Instalare
Un fișier de unitate specific serviciului va avea o secțiune specifică numită Serviciu secțiune.
Rețineți că serviciul este doar un tip de unitate. O unitate poate avea diferite tipuri, cum ar fi soclu, dispozitiv, montură, montare automată, schimb, țintă, temporizator, felie și domeniu. Aceste secțiuni sunt plasate între secțiunile Unitate și Instalare. Extensia de fișier va fi înlocuită și cu tipul de unitate respectiv, de exemplu, un tip de unitate de priză va avea a .priză extensia de fișier.
Notă: În acest ghid, mă voi concentra asupra tipului de unitate de serviciu din cauza utilizării sale pe scară largă de către administratori și dezvoltatori.
Aceste secțiuni sunt cuprinse între paranteze drepte ([]). Fiecare secțiune conține un set de instrucțiuni relevant. O structură generală a unui fișier de serviciu este prezentată mai jos.
[ Unitate ]Directiva 1 =Instrucțiuni 1
Directiva 2 =Instrucțiuni 2
[ Serviciu ]
Directiva 1 =Instrucțiuni 1
Directiva 2 =Instrucțiuni 2
[ Instalare ]
Directiva 1 =Instrucțiuni 1
Directiva 2 =Instrucțiuni 2
Ordinea secțiunilor poate fi modificată; cu toate acestea, ordinea menționată mai sus este respectată în general.
Secțiunea [Unitate].
Secțiunea unitate conține descrierea unității și a dependențelor unității. Această secțiune, prin convenție, este plasată în partea de sus a fișierului de serviciu. Directivele utilizate în mod obișnuit sunt enumerate mai jos:
Directivă | Descriere |
Descriere | Această directivă este folosită pentru a menționa numele serviciului. Lungimea descrierii nu trebuie să depășească 80 de caractere. |
Documentație | Această directivă conține pagina de manual sau adresa URL a serviciului. |
Necesită | Această directivă este folosită pentru a menționa dependența de serviciul actual. Dacă activarea acestui serviciu de dependență nu este efectuată, serviciul curent nu va fi inițiat. |
Vrea | Această directivă este folosită pentru a menționa dependența de serviciul actual. Cu toate acestea, acest serviciu de dependență nu este necesar să fie activat pentru a rula serviciul curent. |
Inainte de | După ce unitatea curentă a fost activată, serviciul menționat în această directivă va fi pornit. |
După | Înainte ca unitatea curentă să fie activată, serviciul menționat în această directivă va fi pornit. |
BindsTo | Această directivă leagă serviciul actual de serviciul menționat. Dacă serviciul conectat repornește, serviciile curente vor reporni și ele. |
În afară de aceste directive, mai există două directive; Condiție și Afirma. Multe servicii necesită condiții specifice de sistem pentru a rula cu succes, iar aceste directive sunt folosite pentru a menționa condițiile.
Secțiunea [Instalare].
Această secțiune nu este obligatorie și este necesară doar atunci când un serviciu necesită activarea sau dezactivarea la pornire. Mai mult, este de menționat și serviciul de alias. Directivele utilizate în mod obișnuit pentru secțiunea Instalare sunt enumerate mai jos:
Directivă | Descriere |
WantedBy | Această directivă stabilește nivelul de rulare * ținta serviciului. Dacă o țintă este setată la multi-utilizator.tinta atunci serviciul va fi activat la acest nivel de rulare. |
Cerut de | Această directivă seamănă cu WantedBy, cu toate acestea, chiar și fără dependența menționată în directivă, serviciul va fi activat. |
Alias | Această directivă este folosită pentru a activa serviciul cu alt nume. Un link simbolic este creat cu acest nume atunci când serviciul este activat. |
În mare parte, multi-utilizator.tinta este folosit ca WantedBy parametru. Dar ce este multi-user.target?
Multi-user.target reprezintă starea sistemului gata să accepte sesiuni non-grafice cu mai mulți utilizatori. Este statul înainte de lansarea GUI.
Există diferite niveluri de rulare ale sistemului, să învățăm despre funcția acestor niveluri de rulare.
În systemd, serviciile sunt grupate pe baza nivelurilor de rulare, care sunt apelate tinte . Fiecare nivel de rulare are un fișier cu .ţintă extensie în /etc/systemd/system director. Un serviciu va rula pe baza stării nivelului de rulare.
Run Level | Ținte | Stat | Fișiere |
0 | oprire | Opriți și opriți | poweroff.tinta |
1 | salvare | Pornește carcasa de salvare | salvare.ţinta |
2,3,4 | multi utilizator | Pornește shell-ul non-GUI multi-utilizator | multi-utilizator.tinta |
5 | grafic | Stabilește shell GUI multi-utilizator | grafică.ţintă |
6 | reporniți | Opriți și reporniți | repornire.ţintă |
Secțiunea [Servicii].
Această secțiune cuprinde setările de configurare pentru serviciu. Configurația principală a acestei secțiuni este definirea tipului și comenzilor care trebuie executate la începutul serviciului. Tip și ExecStart sunt principalele directive folosite pentru înființarea unui serviciu.
Diferite tipuri de servicii sunt enumerate în tabelul următor.
Tip serviciu | Descriere |
simplu | Este tipul implicit atunci când tipul sau Busname nu este menționat și este menționat doar ExecStart. Systemd execută mai întâi procesul principal și apoi unitățile ulterioare. |
bifurcare | Acest tip este folosit pentru a menține serviciul în funcțiune chiar dacă serviciul părinte este închis. Închide un proces copil după închiderea procesului părinte. |
o singura sansa | Systemd execută mai întâi procesul principal și când procesul principal iese, vor porni unitățile de urmărire. |
dbus | Serviciul cu dbus este folosit pentru a comunica cu un alt proces de pe magistrală. Dacă numele magistralei este menționat, atunci procesul va fi activat după achiziționarea numelui magistralei. |
notifica | Serviciul va anunța când începe procesul. Systemd va trece la unitățile de urmărire după emiterea notificării. |
inactiv | Deține serviciul până când toate joburile active sunt expediate; util în primul rând pentru a îmbunătăți ieșirea consolei. |
Directivele utilizate în mod obișnuit în secțiunea Service sunt menționate mai jos:
Directivă | Descriere |
ExecStart | Păstrează calea completă a comenzii care urmează să fie executată pentru a începe procesul. |
ExecStartPre | Păstrează comenzile care ar trebui să fie executate înainte de începerea procesului principal. |
ExecStartPost | Păstrează comenzile care ar trebui să fie executate după începerea procesului principal. |
ExecReload | Păstrează comanda pentru a reîncărca configurația serviciului. |
Repornire | Pentru a reporni automat serviciul în circumstanțe cum ar fi la eșec, la succes, la anormal, la abandon și la supraveghere. |
RestartSec | Pentru a păstra numărul de secunde după care serviciul va reporni automat. |
The ExecStart este una dintre directivele cruciale utilizate în secțiunea Service. Acesta conține calea completă a executabilului pe care serviciul se va executa la invocare.
Concluzie
Un fișier de serviciu systemd este un fișier de configurare care este structurat cu directive și comenzi astfel încât acestea să poată fi gestionate de systemd. Aceste fișiere conțin instrucțiuni care indică modul în care un serviciu este gestionat de systemd. În acest ghid, am abordat cum să accesez un fișier de serviciu systemd, secțiunile acestuia și directivele care gestionează serviciile. Pentru a afla mai multe despre instrucțiunile fișierului de service, vă rugăm să citiți ghidul de documentație oficial găsit Aici .