„Linux“ paslaugos paleidžiamos iš karto, kai tik sistema paleidžiama arba paleidžiama iš naujo. Štai kaip galite sukurti automatiškai paleidžiamą sistemos paslaugą „Linux“ kompiuteryje.
systemd yra daugelio gerai žinomų Linux platinimų paslaugų vadybininkas. Paslauga yra programos vienetas, kuris paprastai veikia fone. Paslaugos iš esmės paleidžiamos automatiškai, kai tik sistema paleidžiama, ir gali veikti be priežiūros.
Jei reikia sukurti automatiškai paleidžiamą užduotį arba programą, kuri būtų vykdoma kiekvieną kartą, kai paleidžiate arba perkraunate sistemą, galite apsvarstyti galimybę sukurti naują paslaugą. Sužinokime, kaip sukurti naują, tinkintą sistemos paslaugą Linux sistemoje.
1 veiksmas: sukurkite paslaugos failą
Norint sukurti naują sistemos paslaugos failą, reikia atlikti kelis veiksmus. Pirmasis iš jų yra paslaugos vieneto failo kūrimas. Prieš kurdami paslaugos failą, turite suprasti jo struktūrą.
Išstudijuokime paslaugos failą, ištraukdami tikrą, veikiantį paslaugos failą iš jūsų Linux sistemos. Žemiau galite pamatyti vmtools demono paslaugos paslaugų failą.
Šios konkrečios paslaugos jūsų sistemoje gali nebūti, nebent taip pat naudojate „Linux“ sistemoje „VMware“ su įdiegtais VMware įrankiais. Aptariama paslauga nėra svarbi, nes visos paslaugos, tiksliau, paslaugų vienetų failai, turi tą pačią bazinę struktūrą su tam tikrais pritaikymais pagal poreikį.
Visi sistemos paslaugų failai turi turėti tris skyrius: [Paslauga], [Vieta], ir [Diegti]ir po kelis parametrus kiekviename skyriuje. Štai kas yra kiekviename skyriuje ir kodėl jie svarbūs:
1. Vienetas
The Vienetas skyriuje yra svarbūs metaduomenys, pvz., paslaugos aprašymas ir priklausomybės. Jis turi tris parametrus: apibūdinimas, Prieš, ir Po to. Kaip rodo tas pats, apibūdinimas parametras pateikia tam tikrą paslaugos kontekstą ir tai, ką ji daro.
The Prieš ir Po to parametrai apibrėžia sąlygas, kurios turi būti įvykdytos, kad paslauga būtų vykdoma. Pavyzdžiui, jei pradedate žiniatinklio serverio paslaugą, norėtumėte, kad ji būtų paleista tik tada, kai tinklo paslauga bus prijungta. Taigi jūs nustatytumėte vertę Po to parametrą į tinklo paslaugą.
2. Aptarnavimas
The Aptarnavimas skyriuje yra du privalomi parametrai: ExecStart, Tipas, ir keletas kitų pasirenkamų parametrų, pvz ExecReload, ir dar.
ExecStart apibrėžia komandą, kuri turi būti vykdoma paleidus paslaugą, o Tipas parametras nustato proceso tipą.
3. Diegti
Šis skyrius ir jo duomenys iškviečiami kiekvieną kartą, kai įjungiate arba išjungiate paslaugą komanda systemctl.
Jis turi keletą parametrų. Vienas iš įprastų ir būtinų yra WantedBy. The WantedBy parametras apibrėžia tikslinius vienetus, kurie turėtų prasidėti kiekvieną kartą, kai paslauga įjungiama. Numatytoji reikšmė yra kelių vartotojų.taikinys.
Čia paminėti parametrai nėra vieninteliai parametrai, kuriuos galite nustatyti vieneto faile. Visą parametrų sąrašą galite gauti iš oficiali systemd.exec dokumentacija arba įvesdami žmogus systemd.exec terminale.
Sistemos aptarnavimo vieneto failas visada baigiasi „.paslauga" plėtinį ir turi būti saugomi /etc/systemd/system/ katalogas. Sukurkite paslaugos failą naudojant jutiklinę komandą su padidintomis privilegijomis, prieš jį įrašant sudo komanda:
sudo touch /etc/systemd/system/.paslauga
Dabar, kai sukūrėte paslaugos failą, pradėkime jį užpildyti reikalinga sintaksė, kad paslauga veiktų ir veiktų.
2 veiksmas: paslaugų failo konfigūravimas
Norėdami parodyti, sukursite pavyzdinę paslaugą, kuri vykdoma Nmap, kad nuskaitytų jūsų įrenginio prievadus ir išsaugokite išvestį faile kas trisdešimt sekundžių. Norėdami atlikti šią užduotį, štai kaip struktūrizuoti paslaugų vieneto failą:
[Vieta]
Description=Pasirinktinės nmap paslaugos demonstravimas.
After=network.target[Paslauga]
Tipas = paprastas
User=root
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt localhost
Paleisti iš naujo = visada
RestartSec=30
[Diegti]
WantedBy=multi-user.target
Nors čia paminėti parametrai buvo paaiškinti anksčiau, pažiūrėkime, kaip jie veikia mūsų naujai sukurtą paslaugą, taip pat išnagrinėsime naujus šiame skyriuje pateiktus parametrus: Perkrauti, RestartSec, ir Vartotojas.
Štai ką reiškia kiekvieno skyriaus parametrai:
- Apibūdinimas: Žmonėms skaitomas tekstas, apibūdinantis paslaugos funkcijas.
- After=network.target: Diktuoja sistemai, nuo kurios ši paslauga priklauso tinklas.taikinys ir turėtų prasidėti tik po to tinklas.taikinys paslauga pradėta teikti. Prisimink tai Po to nenaudojamas jokiems tiesioginiams priklausomybės santykiams nustatyti, jis tiesiog veikia kaip trigeris.
- Tipas = paprastas: Yra keletas paslaugų tipų. Tačiau paslauga šioje demonstracijoje yra įprastas procesas, todėl mes taip deklaruojame. Visas skirtingas vertes galite rasti oficialiame dokumentacijos puslapyje, kurio nuoroda buvo pateikta anksčiau.
- Paleisti iš naujo = visada: Tai reiškia, kad kai tik paslauga išjungiama, ji visada turėtų būti paleista iš naujo.
- RestartSec=30: Taip nustatomas 30 sekundžių intervalas tarp kiekvienos paslaugos pradžios.
- User=root: Tai apibrėžia, kad paslauga veiks kaip root vartotojas. Šiuo atveju tai būtina atlikti, nes Nmap negalės paleisti be root teisių.
- ExecStart: Ši direktyva turi absoliutų kelią į programą, kuri turi būti vykdoma, kartu su visomis būtinomis vėliavėlėmis arba argumentais, kurių reikia, kad programa tinkamai veiktų.
- WantedBy=multi-user.target: Šis paslaugos failo parametras nurodo, kuris tikslas turėtų apimti arba „norėti“ paslaugos. Kai paslauga įtraukta į tikslą, tai reiškia, kad paslauga turėtų prasidėti, kai sistema pasiekia tą tikslą įkrovos proceso metu. Tokiu atveju paslauga turėtų prasidėti, kai sistema pereina į kelių vartotojų režimą. Kelių vartotojų režimas yra būsena, kai sistema yra visiškai paleidžiama ir leidžia keliems vartotojams prisijungti ir naudoti sistemą.
3 veiksmas: paslaugos įgalinimas ir paleidimas
Dabar, kai sukūrėte vieneto failą, tereikia suaktyvinti paslaugą – ją įjungti ir paleisti. Galite įjungti ir paleisti paslaugą naudodami komandą systemctl.
Štai kaip naudoti systemctl paslaugai įjungti, paleisti ir patikrinti jos būseną:
sudo systemctl enable .paslauga
sudo systemctl start .paslauga
sudo systemctl būsena .paslauga
Dabar jūsų tinkinta paslauga turėtų veikti! Tokiu atveju turėtumėte matyti Nmap nuskaitymą, vykdomą kas trisdešimt sekundžių, o išvestis išsaugoma rezultatai.txt failą namų kataloge.
Sisteminės paslaugos nustatymas sistemoje „Linux“ yra paprastas!
Nors tinkintos paslaugos nustatymas nuo nulio iš pradžių gali atrodyti bauginantis, tai gana paprastas būdas sukurti savarankišką, neprižiūrimą procesą, kad už jus atliktumėte pasikartojančias užduotis ir pagerintumėte jūsų veiklą produktyvumas.
Demonstracinėje paslaugoje mes vos nubrėžėme, kaip galite konfigūruoti ir nustatyti paslaugą. Norėdami sužinoti viską apie tai, kaip galite tinkinti paslaugą, rekomenduojama peržiūrėti oficialią dokumentaciją, kurios nuoroda pateikiama pastaboje.
Jei paslaugos nustatymas ir priežiūra jums atrodo per didelė užduotis, apsvarstykite galimybę patikrinti alternatyvų būdą, kaip automatizuoti pasikartojančias užduotis sistemoje „Linux“.