Systemd init süsteem on nüüd osa peaaegu kõigist Linuxi distributsioonidest. Administraatori või arendajana loote teenuseid, mida systemd saab hallata. Näiteks kui soovite käivitada teenuseid alglaadimisel või soovite neid käsitsi juhtida, saate seda teha kohandatud teenusefaili kaudu.
Selles õpetuses käsitlen Linuxis süsteemiteenuse faili loomist.
Mis on teenusefail
Enne kui läheme edasi, mõistkem, mis on süsteemiteenuse fail ja kuidas see Linuxis luuakse.
Systemd teenusefail sisaldab juhiseid, mis on süsteemile määratud teenuse haldamiseks. Tavaliselt sisaldab see kolme jaotist:
- Üksus
- Teenindus
- Installige
The Üksus jaotis sisaldab põhiteavet teenuse kohta, nagu lühikirjeldus, dokumentatsioonilehed ja sõltuvuste tee. The Installige jaotis on valikuline, kuid tavaliselt haldab see, millises süsteemi olekus teenus peaks olema lubatud.
The Teenindus sektsioon jääb tavaliselt jaotise Üksus ja installi vahele. See sisaldab peamiselt teenuse tüüpi ja käivitatavate failide teed, mis on sisuliselt käsud, mida süsteemid teenuse käivitamisel käivitavad.
Siin näeb välja tüüpiline teenusefaili struktuur.
[ Üksus ]
Direktiiv1 =juhend
Direktiiv2 =juhend
…
[ Teenindus ]
Direktiiv1 =juhend
Direktiiv2 =juhend
…
[ Installige ]
Direktiiv1 =juhend
Direktiiv2 =juhend
…
Siin on direktiivid parameetrid, mis võtavad vastava sisendi. Näiteks Kirjeldus direktiiv võtab teenuse nime stringi. Sarnasel viisil, ExecStart võtab arvesse käivitatava faili täielikku teed.
Tüüpiline teenindusfail ssh.service on toodud allpool.
Kuidas luua teenusefaili
Süsteemse teenuse loomiseks on vaja mõista põhijuhiseid. Selles juhendis käsitlen olulisi juhiseid, mis aitavad teil luua täielikult toimiva teenusefaili.
Teenusfaili loomine hõlmab mitut sammu, alustame skriptifaili loomisega.
Märge: Allpool mainitud meetodiga jätkamiseks peavad teil olema administraatoriõigused.
1. Skripti loomine
Esimene samm hõlmab koodi loomist, mis käivitatakse siis, kui teenus alustab oma tööd. Selle õpetuse jaoks loon bash-skripti, mis salvestab Linuxi süsteemi tööaja ja mälukasutuse.
Loome praeguses kataloogis skripti nimega myscript.sh nano redaktori abil.
sudo nano myscript.shNüüd lisage faili allpool toodud skript ja salvestage see, vajutades ctrl+x ja siis ja .
#!/bin/bashkaja '>>Siin on teie süsteemi tööaeg<<' > Kodu / ise / minu fail.txt
tööaeg >> Kodu / ise / minu fail.txt
kaja '>>Siin on teie süsteemi mälukasutus<<' >> / Kodu / ise / minu fail.txt
tasuta -m >> Kodu / ise / minu fail.txt
magama 60
Skript sisaldab paari kajastringi ja tööaeg ja tasuta käske.
The tööaeg Linuxis kasutatakse käsku printimiseks, kui kaua süsteem on töötanud ja kui palju kasutajaid on ühendatud keskmise süsteemikoormusega viimase 1, 5 ja 15 minuti jooksul.
The tasuta käsku kasutatakse süsteemi mälukasutuse printimiseks, samas kui -m lippu kasutatakse väljundi sissetrükkimiseks MBs .
Teabe salvestamiseks tekstifaili kasutame spetsiaalseid operaatoreid, mida nimetatakse ümbersuunamisoperaatoriteks. The > operaatorit kasutatakse teksti lisamiseks nimetatud tekstifaili. Kui aga faili veel ei ole, luuakse see. Samal ajal kui >> operaatorit kasutatakse faili teksti lisamiseks. The magama käsku kasutatakse teenuse aktiivsuse säilitamiseks vähemalt ühe minuti jooksul.
Nüüd muutke skript käivitatavaks, andes vajalikud õigused.
sudo chmod +x myscript.shSkriptil on nüüd täitmisluba, jätkame järgmise jaotisega.
Märge: Teenusfaili veavabaks muutmiseks kasutage bash-skriptis faili absoluutset teed.
2. Teenusfaili loomine
Järgmisena looge teenusefail .teenus pikendamine. Teenusfail tuleb luua /etc/systemd/system kataloog. Esmalt navigeerige sellesse kataloogi, kasutades nuppu cd käsk.
cd / jne / süsteemne / süsteemSaate luua teenusefaili mis tahes kataloogis ja hiljem selle faili sellesse kataloogi teisaldada.
Loon teenusefaili rakendusega minuteenus.teenus nimi.
sudo nano minuteenus.teenusNüüd lisage faili järgmised read.
[ Üksus ]Kirjeldus =Minu teenus
[ Teenindus ]
Tüüp =lihtne
ExecStart = / prügikast / bash / Kodu / ise / script.sh
Taaskäivita =tõrke korral
[ Installige ]
WantedBy =multi-user.target
Pange tähele, et [Üksus], [teenus], ja [Installi] on tõstutundlik . Teenindusfail ei tööta, kui mõnda neist on valesti mainitud, näiteks [ÜHIK] või [SERVICE].
Teenuse nimi on määratud kui Minu Teenus aastal Kirjeldus käskkiri [Ühik] osa.
The Tüüp teenusest on lihtne aastal [teenus] jaotis, mis on vaiketüüp. Hargnemine , üks lask , teatama , dbus , ja tühikäik on mõned muud tüübid.
Kui soovite muuta teenuse kasutajapõhiseks, siis Kasutaja direktiivi saab kasutada ka koos kasutaja kasutajanimega. Selle direktiivi kasutamine muudab teenuse kasutaja loa sõltuvaks.
Samal ajal kui ExecStart direktiiv sisaldab käivitatava faili täielikku teed. Ülaltoodud näites skriptifail myscript.sh on salvestatud /home/sam/ kataloog. See direktiiv juhib tegelikult seda, mida käivitada, kui systemd teenust kutsub. Kui käsu täielikku teed pole määratud, lahendatakse see automaatselt absoluutsete teede parandamiseks, näiteks /usr/local/bin , /usr/bin/, ja /bin . Täiesti hea on kasutada käivitatavat nime seni, kuni need on standardsetes käskude kataloogides, kuid muidu mainige absoluutset teed. Pange tähele, et kasutada saab ka mitut käsku, mis on eraldatud semikooloniga (;).
The [Installi] jaotis on valikuline; see aga näitab, kuidas teenus on lubatud. The WantedBy direktiiv võtab parameetritena käitamistaseme sihtfailid. Erinevad sihtfailid näitasid süsteemi erinevaid käitamistasemeid, näiteks väljalülitamine , päästa , mitme kasutajaga , graafiline ja taaskäivitage .
The multi-user.target tähendab, et teenus lubatakse, kui süsteem on olekus, mis võimaldab mitme kasutajaga mittegraafilisi seansse.
3. Teenuse aktiveerimine
Teenuse aktiveerimiseks laadige esmalt uuesti süsteemi konfiguratsioonid kasutades systemctl kasulikkust.
sudo systemctl deemon-reloadSeejärel aktiveerige teenus uuesti kasutades systemctl käsuga lubada .
sudo systemctl lubada minuteenus.teenusKontrollimiseks kontrollige teenuse olekut kasutades systemctl olek käsk.
Teenus töötab edukalt.
Nüüd loeme tekstifaili minu fail.txt aastal loodud teenus /Kodu kataloog.
Kuidas luua tavakasutajale süsteemiteenuse faili
Tavakasutajale teenusefaili loomise protseduur sarnaneb administraatori poolt teenusefaili loomise meetodiga. Tavakasutajate teenusefaili salvestamise kataloog on aga erinev. Tavakasutajad peavad oma teenusefailid paigutama ~/.config/systemd/user . See kataloog tuleb luua kasutades mkdir käsk.
mkdir ~ / .config / süsteemne / kasutajaTeenuse aktiveerimiseks tavakasutaja poolt – kasutaja käsk sisestatakse systemctl selle asemel sudo .
systemctl --kasutaja deemon-reloadsystemctl --kasutaja lubada SERVICE-NAME.service
systemctl --kasutaja olek SERVICE-NAME.service
The – kasutaja suvandit kasutatakse kasutaja süsteemsete teenusefailide haldamiseks.
Kuidas teenusefaili eemaldada
Teenusfaili eemaldamiseks tuleb esmalt teenus peatada.
sudo systemctl stop SERVICE-NAME.serviceKontrollige olekut kasutades systemctl olek käsk, et teada saada, kas teenus on peatatud või mitte. Seejärel eemaldage teenusefail, kasutades nuppu rm käsk.
sudo rm / jne / süsteemne / süsteem / SERVICE-NAME.serviceNüüd laadige uuesti süsteemne konfiguratsiooni.
sudo systemctl deemon-reloadJäreldus
Kohandatud systemd-teenus on kasulik erinevatel stsenaariumidel. Selles juhendis õppisime, kuidas luua süsteemiadministraatori jaoks kohandatud süsteemiteenuse faili ja kuidas tavakasutajad saavad teenusefaili luua. Lisaks näeme ka teenusefaili eemaldamise protseduuri.