Storitve v sistemu Linux se zaženejo takoj, ko se sistem zažene ali znova zažene. Tukaj je opisano, kako lahko ustvarite samodejno zagonsko storitev systemd na vašem računalniku z Linuxom.
systemd je upravitelj storitev za veliko znanih distribucij Linuxa. Storitev je enota programa, ki običajno deluje v ozadju. Storitve se po naravi samodejno zaženejo takoj, ko se sistem zažene, in lahko delujejo nenadzorovano.
Če morate ustvariti samodejni zagon opravila ali programa, ki se izvede vsakič, ko zaženete ali znova zaženete sistem, lahko razmislite o ustvarjanju nove storitve. Naučimo se ustvariti novo storitev systemd po meri v Linuxu.
1. korak: Ustvarjanje storitvene datoteke
Za ustvarjanje nove storitvene datoteke systemd je potrebnih nekaj korakov. Prvi izmed njih je ustvarjanje datoteke enote za storitev. Preden ustvarite servisno datoteko, morate razumeti njeno strukturo.
Preučimo servisno datoteko tako, da potegnemo pravo, delujočo servisno datoteko iz vašega sistema Linux. Spodaj si lahko ogledate servisno datoteko za storitev demona vmtools.
Ta posebna storitev morda ni prisotna v vašem sistemu, razen če uporabljate tudi Linux na VMware z nameščenimi orodji VMware. Zadevna storitev ni pomembna, ker imajo vse storitve ali bolje rečeno datoteke storitvenih enot enako osnovno strukturo z nekaterimi prilagoditvami po potrebi.
Vse storitvene datoteke systemd morajo imeti tri razdelke: [Storitev], [Enota], in [Namesti]in nekaj parametrov pod vsakim razdelkom. Kaj vsebuje vsak razdelek in zakaj so pomembni:
1. Enota
The Enota vključuje pomembne metapodatke, kot so opis in odvisnosti storitve. Ima tri parametre: Opis, prej, in Po. Kot isto nakazuje, Opis podaja nekaj konteksta storitve in njenega delovanja.
The prej in Po parametri določajo pogoje, ki morajo biti izpolnjeni za izvajanje storitve. Na primer, če zaženete storitev spletnega strežnika, bi želeli, da se zažene šele, ko je omrežna storitev na spletu. Torej bi nastavili vrednost Po parameter za omrežno storitev.
2. Storitev
The Storitev razdelek vsebuje dva obvezna parametra: ExecStart, Vrstain nekaj drugih neobveznih parametrov, kot je ExecReload, in več.
ExecStart definira ukaz, ki se izvede ob zagonu storitve, medtem ko Vrsta parameter določa vrsto procesa, ki se bo pojavil.
3. Namestite
Ta razdelek in njegovi podatki se pokličejo vsakič, ko omogočite ali onemogočite storitev z ukaz systemctl.
Ima par parametrov. Eden od pogostih in potrebnih je WantedBy. The WantedBy parameter določa ciljne enote, ki naj se zaženejo vsakič, ko je storitev omogočena. Privzeta vrednost je multi-user.target.
Tukaj omenjeni parametri niso edini parametri, ki jih lahko nastavite v datoteki enote. Celoten seznam parametrov lahko dobite pri uradna dokumentacija systemd.exec ali z vpisom man systemd.exec v terminalu.
Datoteka storitvene enote systemd se vedno konča z ".storitev" razširitev in mora biti shranjena v /etc/systemd/system/ imenik. Ustvarite servisno datoteko z uporabo ukaza na dotik s povišanimi privilegiji, tako da ga predpono označite z sudo ukaz:
sudo touch /etc/systemd/system/.storitev
Zdaj, ko ste ustvarili servisno datoteko, jo pojdimo zapolniti s potrebno sintakso, da bo storitev veljavna in delovala.
2. korak: Konfiguriranje storitvene datoteke
Za predstavitev boste ustvarili vzorčno storitev, ki se izvaja Nmap za skeniranje vrat na vaši napravi in shrani izhod v datoteko vsakih trideset sekund. Datoteko storitvene enote strukturirate takole:
[Enota]
Opis=Demonstracija storitve nmap po meri.
After=network.target[Storitev]
Vrsta=enostavno
Uporabnik=root
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt lokalni gostitelj
Ponovni zagon=vedno
RestartSec=30
[Namesti]
WantedBy=multi-user.target
Čeprav so bili tukaj omenjeni parametri že razloženi, si poglejmo, kako vplivajo na našo novo ustvarjeno storitev, in raziščimo tudi nove, predstavljene v tej enoti: Ponovni zagon, RestartSec, in Uporabnik.
Tukaj je, kaj pomenijo parametri v vsakem razdelku:
- Opis: Človeku berljivo besedilo za opis funkcionalnosti storitve.
- After=network.target: Sistemu narekuje, da je ta storitev odvisna od network.target in naj se začne šele po network.target storitev se je začela. Upoštevajte to Po se ne uporablja za vzpostavljanje kakršnega koli razmerja neposredne odvisnosti, temveč preprosto deluje kot sprožilec.
- Vrsta=enostavno: Obstaja več vrst storitev. Vendar je storitev v tej predstavitvi reden proces, zato ga izjavljamo kot takega. Vse različne vrednosti za to lahko najdete na strani z uradno dokumentacijo, ki je povezana prej.
- Znova zaženi=vedno: To pomeni, da se mora storitev vedno znova zagnati, kadar koli zapre.
- RestartSec=30: To nastavi interval med posameznimi zagoni storitve na 30 sekund.
- Uporabnik=root: To določa, da se bo storitev izvajala kot korenski uporabnik. V tem primeru je to obvezen korak, saj Nmap ne bo mogel delovati brez korenskih pravic.
- ExecStart: Ta direktiva vsebuje absolutno pot do programa, ki ga je treba izvesti, skupaj z vsemi zahtevanimi zastavicami ali argumenti, potrebnimi za pravilno delovanje programa.
- WantedBy=multi-user.target: Ta parameter v storitveni datoteki določa, kateri cilj naj vključuje ali "želi" storitev. Ko je storitev vključena v cilj, to pomeni, da se mora storitev zagnati, ko sistem med postopkom zagona doseže ta cilj. V tem primeru se mora storitev zagnati, ko sistem preide v večuporabniški način. Večuporabniški način je stanje, v katerem je sistem popolnoma zagnan in omogoča več uporabnikom, da se prijavijo in uporabljajo sistem.
3. korak: Omogočanje in zagon storitve
Zdaj, ko ste ustvarili datoteko enote, sta edina koraka za aktivacijo vaše storitve omogočanje in zagon. Storitev lahko omogočite in zaženete z ukazom systemctl.
Tukaj je opisano, kako uporabite systemctl za omogočanje, zagon in preverjanje stanja vaše storitve:
sudo systemctl omogoči .storitev
zagon sudo systemctl .storitev
status sudo systemctl .storitev
Zdaj bi morala vaša storitev po meri delovati! V tem primeru bi morali videti skeniranje Nmap, ki se izvaja vsakih trideset sekund in izhod se shrani v rezultati.txt datoteko v domačem imeniku.
Nastavitev storitve systemd v sistemu Linux je enostavna!
Čeprav se nastavitev storitve po meri na začetku morda zdi zastrašujoča, je to precej preprost način za nastavitev ustvarite samoizvršljiv, nenadzorovan proces za izvajanje ponavljajočih se nalog namesto vas in izboljšanje vašega produktivnost.
V predstavitveni storitvi smo komaj kaj popraskali po površini, kako lahko konfigurirate in nastavite storitev. Če želite izvedeti vse o tem, kako lahko prilagodite svojo storitev, priporočamo, da preberete uradno dokumentacijo, na katero je povezava v opombi.
Če se vam nastavitev in vzdrževanje storitve zdi pretežka naloga, razmislite o alternativnem načinu za avtomatizacijo ponavljajočih se nalog v Linuxu.