Serviciile pe Linux pornesc de îndată ce sistemul dvs. pornește sau repornește. Iată cum puteți crea un serviciu systemd cu pornire automată pe computerul dvs. Linux.
systemd este managerul de servicii pentru o mulțime de distribuții Linux binecunoscute. Un serviciu este o unitate a unui program care rulează de obicei în fundal. Serviciile, prin natura lor, pornesc automat de îndată ce sistemul pornește și pot rula nesupravegheat.
Dacă trebuie să creați o sarcină sau un program cu pornire automată care se execută de fiecare dată când porniți sau reporniți sistemul, puteți lua în considerare crearea unui nou serviciu. Să învățăm cum să creăm un nou serviciu de sistem personalizat pe Linux.
Pasul 1: Crearea fișierului de serviciu
Există câțiva pași necesari pentru a crea un nou fișier de serviciu systemd. Prima dintre ele este crearea fișierului unitar pentru serviciu. Înainte de a crea un fișier de serviciu, trebuie să înțelegeți structura acestuia.
Să studiem fișierul de serviciu prin extragerea unui fișier de serviciu real și funcțional din sistemul dumneavoastră Linux. Mai jos, puteți vedea fișierul de serviciu pentru serviciul demon vmtools.
Este posibil ca acest serviciu special să nu fie prezent pe sistemul dvs. decât dacă rulați și Linux pe VMware cu instrumentele VMware instalate. Serviciul în cauză nu este important deoarece toate serviciile, sau mai degrabă, fișierele unităților de servicii, au aceeași structură de bază, cu unele personalizări după cum este necesar.
Toate fișierele de serviciu systemd trebuie să aibă trei secțiuni: [Serviciu], [Unitate], și [Instalare], și câțiva parametri sub fiecare secțiune. Iată ce conține fiecare secțiune și de ce sunt importante:
1. Unitate
The Unitate secțiunea include metadate importante, cum ar fi o descriere și dependențe ale serviciului. Are trei parametri: Descriere, Inainte de, și După. După cum sugerează același lucru, Descriere parametrul oferă un anumit context al serviciului și ceea ce face acesta.
The Inainte de și După parametrii definesc condițiile care trebuie îndeplinite pentru executarea serviciului. De exemplu, dacă porniți un serviciu de server web, doriți ca acesta să pornească numai după ce serviciul de rețea este online. Deci ai seta valoarea lui După parametru la serviciul de rețea.
2. Serviciu
The Serviciu secțiunea conține doi parametri obligatorii: ExecStart, Tip, și alți câțiva parametri opționali, cum ar fi ExecReload, și altele.
ExecStart definește comanda care trebuie executată la pornirea serviciului, în timp ce Tip parametrul determină tipul de proces de generat.
3. Instalare
Această secțiune și datele sale sunt apelate ori de câte ori activați sau dezactivați serviciul cu comanda systemctl.
Are câțiva parametri. Una dintre cele comune și necesare este WantedBy. The WantedBy parametrul definește unitățile țintă care ar trebui să înceapă ori de câte ori serviciul este activat. Valoarea implicită este multi-utilizator.tinta.
Parametrii menționați aici nu sunt singurii parametri pe care îi puteți seta într-un fișier unitar. Puteți obține lista completă a parametrilor din documentația oficială systemd.exec sau tastând man systemd.exec într-un terminal.
Un fișier de unitate de serviciu systemd se termină întotdeauna cu „.serviciu" și trebuie să fie stocat în /etc/systemd/system/ director. Creați fișierul de serviciu folosind comanda tactilă cu privilegii ridicate prin prefixarea acestuia cu sudo comanda:
sudo touch /etc/systemd/system/.serviciu
Acum că ați creat fișierul de serviciu, să trecem la popularea acestuia cu sintaxa necesară pentru ca serviciul să fie valid și să funcționeze.
Pasul 2: Configurarea fișierului de serviciu
Pentru demonstrație, veți crea un exemplu de serviciu care se execută Nmap pentru a scana porturile de pe aparat și stocați rezultatul într-un fișier la fiecare treizeci de secunde. Pentru a realiza această sarcină, iată cum să structurați fișierul unității de serviciu:
[Unitate]
Descriere=Demonstrarea serviciului personalizat nmap.
După=rețea.țintă[Serviciu]
Tip=simplu
Utilizator=rădăcină
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt localhost
Restart=intotdeauna
RestartSec=30
[Instalare]
WantedBy=multi-user.target
Deși parametrii menționați aici au fost explicați anterior, să trecem peste modul în care aceștia afectează serviciul nostru nou creat și, de asemenea, să îi explorăm pe cei noi introduși în această unitate: Repornire, RestartSec, și Utilizator.
Iată ce înseamnă parametrii din fiecare secțiune:
- Descriere: Text care poate fi citit de om pentru a descrie funcționalitățile serviciului.
- După=network.target: Dictând către Systemd de care depinde acest serviciu reţea.ţintă și ar trebui să înceapă numai după reţea.ţintă serviciul a fost pornit. Rețineți că După nu este folosit pentru a stabili vreo relație de dependență directă, pur și simplu acționează ca un declanșator.
- Tip=simplu: Există mai multe tipuri de servicii. Cu toate acestea, serviciul din această demonstrație este un proces regulat și, prin urmare, îl declarăm așa. Puteți găsi toate valorile diferite pentru aceasta pe pagina de documentație oficială legată mai devreme.
- Restart=intotdeauna: Aceasta înseamnă că de fiecare dată când serviciul iese, acesta ar trebui să repornească întotdeauna.
- RestartSec=30: Aceasta setează intervalul dintre fiecare pornire a serviciului la 30 de secunde.
- Utilizator=rădăcină: Aceasta definește că serviciul va rula ca utilizator root. În acest caz, acesta este un pas obligatoriu, deoarece Nmap nu va putea rula fără privilegii de root.
- ExecStart: Această directivă deține calea absolută către programul care urmează să fie executat împreună cu toate indicatoarele sau argumentele necesare pentru ca programul să funcționeze corect.
- WantedBy=multi-user.target: Acest parametru dintr-un fișier de serviciu specifică care țintă ar trebui să includă sau „dorește” serviciul. Când un serviciu este inclus într-o țintă, înseamnă că serviciul ar trebui să înceapă atunci când sistemul atinge acea țintă în timpul procesului de pornire. În acest caz, serviciul ar trebui să înceapă când sistemul intră în modul multi-utilizator. Modul multi-utilizator este o stare în care sistemul este pornit complet și permite mai multor utilizatori să se conecteze și să utilizeze sistemul.
Pasul 3: Activarea și pornirea serviciului
Acum că ați creat fișierul unității, singurii pași rămasi pentru a vă activa serviciul sunt activarea și rularea acestuia. Puteți activa și porni serviciul folosind comanda systemctl.
Iată cum să utilizați systemctl pentru a activa, a porni și a verifica starea serviciului dvs.:
sudo systemctl enable .serviciu
sudo systemctl start .serviciu
stare sudo systemctl .serviciu
Acum, serviciul dvs. personalizat ar trebui să funcționeze! În acest caz, ar trebui să vedeți o scanare Nmap care rulează la fiecare treizeci de secunde și rezultatul fiind stocat în rezultate.txt fișier în directorul principal.
Configurarea unui serviciu systemd pe Linux este ușoară!
Deși configurarea unui serviciu personalizat de la zero poate părea descurajantă la început, este o modalitate destul de ușoară de a seta creați un proces auto-executant, nesupravegheat, pentru a efectua sarcini repetitive pentru dvs. și pentru a vă stimula productivitate.
În serviciul demo, abia am zgâriat suprafața modului în care puteți configura și configura un serviciu. Pentru a afla totul despre cum vă puteți personaliza serviciul, vă recomandăm să parcurgeți documentația oficială legată în notă.
Dacă configurarea și întreținerea unui serviciu vi se pare o sarcină prea mare, luați în considerare o modalitate alternativă de automatizare a sarcinilor repetitive pe Linux.