Systemd init sistem je zdaj del skoraj vseh distribucij Linuxa. Kot skrbnik ali razvijalec ustvarite storitve, ki jih sistemd lahko upravlja. Na primer, če želite zagnati storitve ob zagonu ali jih želite ročno nadzorovati, lahko to storite prek storitvene datoteke po meri.
V tej vadnici bom šel skozi postopek ustvarjanja storitvene datoteke systemd v sistemu Linux.
Kaj je servisna datoteka
Preden gremo naprej, poglejmo, kaj je storitvena datoteka systemd in kako je ustvarjena v Linuxu.
Storitvena datoteka systemd vsebuje navodila, nastavljena za systemd za upravljanje storitve. Običajno vsebuje tri razdelke:
- Enota
- Storitev
- Namestite
The Enota vsebuje osnovne informacije o storitvi, kot so kratek opis, strani z dokumentacijo in pot do odvisnosti. The Namestite je neobvezen, vendar običajno upravlja, v katerem stanju sistema naj bo storitev omogočena.
The Storitev razdelek je običajno stisnjen med razdelkom Enota in Namestitev. Vsebuje predvsem vrsto storitve in pot do izvedljivih datotek, ki so v bistvu ukazi, ki jih je treba izvesti ob priklicu storitve s strani systemd.
Tukaj je videti tipična struktura storitvene datoteke.
[ Enota ]
Direktiva1 =navodilo
Direktiva2 =navodilo
…
[ Storitev ]
Direktiva1 =navodilo
Direktiva2 =navodilo
…
[ Namestite ]
Direktiva1 =navodilo
Direktiva2 =navodilo
…
Tukaj so direktive parametri, ki sprejmejo svoj vnos. Na primer, Opis direktiva sprejme niz imena storitve. Na podoben način, ExecStart upošteva celotno pot izvedljive datoteke.
Tipična servisna datoteka za ssh.service je podan spodaj.
Kako ustvariti servisno datoteko
Za ustvarjanje storitve systemd je potrebno razumeti ključne direktive. V tem priročniku bom obravnaval bistvena navodila, ki vam lahko pomagajo ustvariti popolnoma delujočo storitveno datoteko.
Ustvarjanje storitvene datoteke vključuje več korakov, začnimo z ustvarjanjem skriptne datoteke.
Opomba: Če želite nadaljevati s spodaj omenjeno metodo, morate imeti korenske pravice.
1. Ustvarjanje skripta
Začetni korak vključuje ustvarjanje kode, ki se bo izvajala, ko bo storitev začela delovati. Za to vadnico ustvarjam skript bash, ki bo shranil čas delovanja sistema Linux in uporabo pomnilnika.
Ustvarimo skript v trenutnem imeniku z imenom myscript.sh z uporabo urejevalnika nano.
sudo nano myscript.shZdaj v datoteko dodajte spodnji skript in ga shranite s pritiskom na ctrl+x in potem in .
#!/bin/bashodmev '>>Tu je čas delovanja vašega sistema<<' > domov / sebe / moja datoteka.txt
uptime >> domov / sebe / moja datoteka.txt
odmev '>>Tukaj je uporaba pomnilnika vašega sistema<<' >> / domov / sebe / moja datoteka.txt
prost -m >> domov / sebe / moja datoteka.txt
spati 60
Skript vsebuje nekaj odmevnih nizov in uptime in prost ukazi.
The uptime ukaz v Linuxu se uporablja za izpis, kako dolgo je sistem deloval in koliko uporabnikov je povezanih s povprečno obremenitvijo sistema zadnjih 1, 5 in 15 minut.
The prost ukaz se uporablja za tiskanje porabe pomnilnika sistema, medtem ko se ukaz -m zastavica se uporablja za tiskanje izhoda MB .
Za shranjevanje informacij v besedilno datoteko uporabljamo posebne operatorje, imenovane operaterji preusmeritve. The > se uporablja za vstavljanje besedila v omenjeno besedilno datoteko. Če pa datoteka še ne obstaja, bo ustvarjena. Medtem ko je >> se uporablja za dodajanje besedila v datoteko. The spati ukaz se uporablja za vzdrževanje dejavnosti storitve za najmanj eno minuto.
Zdaj naredite skript izvršljiv tako, da mu dodelite potrebna dovoljenja.
sudo chmod +x myscript.shSkript ima zdaj dovoljenje za izvajanje, pojdimo na naslednji razdelek.
Opomba: Da bo servisna datoteka brez napak, uporabite absolutno pot datoteke v skriptu bash.
2. Ustvarjanje storitvene datoteke
Nato ustvarite servisno datoteko z .storitev razširitev. Storitveno datoteko je treba ustvariti v /etc/systemd/system imenik. Najprej se pomaknite do tega imenika z uporabo cd ukaz.
cd / itd / systemd / sistemStoritveno datoteko lahko ustvarite v katerem koli imeniku in to datoteko pozneje premaknete v ta imenik.
Ustvarjam servisno datoteko z mojastoritev.storitev ime.
sudo nano mojastoritev.storitevZdaj v datoteko dodajte naslednje vrstice.
[ Enota ]Opis =Moja storitev
[ Storitev ]
Vrsta =preprosto
ExecStart = / koš / bash / domov / sebe / skripta.sh
Ponovni zagon =ob neuspehu
[ Namestite ]
WantedBy =multi-user.target
Upoštevajte to [Enota], [Storitev], in [Namesti] so razlikuje med velikimi in malimi črkami . Storitvena datoteka ne bo delovala, če je katera od njih napačno omenjena, na primer [UNIT] ali [SERVICE].
Ime storitve je navedeno kot Moja služba v Opis direktiva [Enota] razdelek.
The Vrsta storitve je preprosto v [Storitev] razdelek, ki je privzeta vrsta. Vilice , en poskus , obvestiti , dbus , in v mirovanju so nekatere druge vrste.
Če želite, da je storitev prilagojena uporabniku, potem Uporabnik lahko uporabite tudi z uporabniškim imenom uporabnika. Z uporabo te direktive bo dovoljenje uporabnika storitve odvisno.
Medtem ko je ExecStart direktiva vsebuje celotno pot do izvedljive datoteke. V zgornjem primeru je datoteka skripta myscript.sh je shranjen v /domov/sam/ imenik. Ta direktiva dejansko upravlja, kaj naj se izvede, ko sistem prikliče storitev. Če celotna pot ukaza ni navedena, bo samodejno razrešen, da popravi absolutne poti, kot je /usr/local/bin , /usr/bin/, in /bin . Popolnoma v redu je, da uporabite ime izvršljive datoteke, dokler so v standardnih imenikih ukazov, sicer pa navedite absolutno pot. Upoštevajte, da je mogoče uporabiti tudi več ukazov, ki so ločeni s podpičjem (;).
The [Namesti] razdelek ni obvezen; vendar označuje, kako je storitev omogočena. The WantedBy direktiva vzame ciljne datoteke na ravni izvajanja kot parametre. Različne ciljne datoteke so pokazale različne ravni izvajanja sistema, kot je npr ugasniti , reševanje , večuporabniški , grafično , in ponovni zagon .
The multi-user.target pomeni, da bo storitev omogočena, ko bo sistem v stanju, ki dovoljuje večuporabniške negrafične seje.
3. Aktivacija storitve
Če želite aktivirati storitev, najprej znova naložite konfiguracije systemd z uporabo systemctl uporabnost.
sudo systemctl daemon-reloadNato znova aktivirajte storitev z uporabo systemctl ukaz z omogočiti .
sudo systemctl omogočiti mojastoritev.storitevČe želite preveriti, preverite stanje storitve z uporabo status systemctl ukaz.
Storitev uspešno deluje.
Zdaj pa preberimo besedilno datoteko moja datoteka.txt storitev, ustvarjena v /domov imenik.
Kako ustvariti storitveno datoteko Systemd za običajnega uporabnika
Postopek izdelave servisne datoteke za običajnega uporabnika je podoben načinu izdelave servisne datoteke s strani skrbnika. Vendar je imenik za shranjevanje storitvene datoteke za običajne uporabnike drugačen. Običajni uporabniki morajo svoje storitvene datoteke postaviti v ~/.config/systemd/user . Ta imenik je treba ustvariti z uporabo mkdir ukaz.
mkdir ~ / .config / systemd / uporabnikZa aktiviranje storitve s strani običajnega uporabnika – uporabnik ukaz je vstavljen z systemctl namesto sudo .
systemctl --uporabnik daemon-reloadsystemctl --uporabnik omogočiti IME-STORITVE.storitev
systemctl --uporabnik status SERVICE-NAME.service
The – uporabnik možnost se uporablja za upravljanje uporabniških storitvenih datotek systemd.
Kako odstraniti servisno datoteko
Če želite odstraniti servisno datoteko, je treba najprej ustaviti storitev.
sudo systemctl zaustavi SERVICE-NAME.servicePreverite stanje z uporabo status systemctl ukaz, če želite vedeti, ali je storitev ustavljena ali ne. Nato odstranite servisno datoteko z uporabo rm ukaz.
sudo rm / itd / systemd / sistem / IME-STORITVE.storitevZdaj znova naložite systemd konfiguracijo.
sudo systemctl daemon-reloadZaključek
Storitev systemd po meri je ugodna v različnih scenarijih. V tem priročniku smo izvedeli, kako ustvariti storitveno datoteko systemd po meri za sistemskega skrbnika in kako lahko običajni uporabniki ustvarijo storitveno datoteko. Poleg tega vidimo tudi postopek odstranitve storitvene datoteke.