Usluge na Linuxu pokreću se čim se vaš sustav podigne ili ponovno pokrene. Evo kako možete stvoriti sistemski servis koji se automatski pokreće na vašem računalu s Linuxom.

systemd je upravitelj usluga za mnoge dobro poznate Linux distribucije. Usluga je jedinica programa koja obično radi u pozadini. Usluge se po prirodi automatski pokreću čim se sustav pokrene i mogu raditi bez nadzora.

Ako trebate stvoriti zadatak ili program s automatskim pokretanjem koji se izvršava svaki put kada pokrenete ili ponovno pokrenete sustav, možete razmisliti o stvaranju nove usluge. Naučimo kako stvoriti novu, prilagođenu uslugu systemd na Linuxu.

Korak 1: Stvaranje servisne datoteke

Postoji nekoliko koraka potrebnih za stvaranje nove systemd servisne datoteke. Prvi od njih je kreiranje jedinične datoteke za uslugu. Prije nego što stvorite servisnu datoteku, morate razumjeti njenu strukturu.

Proučimo servisnu datoteku izvlačenjem stvarne, radne servisne datoteke iz vašeg Linux sustava. U nastavku možete vidjeti servisnu datoteku za vmtools daemon servis.

instagram viewer

Ova posebna usluga možda neće biti prisutna na vašem sustavu osim ako također ne koristite Linux na VMwareu s instaliranim VMware alatima. Usluga o kojoj je riječ nije bitna jer sve usluge, odnosno datoteke servisnih jedinica, imaju istu osnovnu strukturu uz neke prilagodbe prema potrebi.

Sve systemd servisne datoteke moraju imati tri odjeljka: [Servis], [Jedinica], i [Instalirati]i nekoliko parametara ispod svakog odjeljka. Evo što svaki odjeljak sadrži i zašto su važni:

1. Jedinica

The Jedinica odjeljak uključuje važne metapodatke poput opisa i ovisnosti usluge. Ima tri parametra: Opis, Prije, i Nakon. Kao što isti sugerira, Opis parametar pruža neki kontekst usluge i što ona radi.

The Prije i Nakon parametri definiraju uvjete koje treba ispuniti da bi se usluga izvršila. Na primjer, ako pokrećete uslugu web poslužitelja, željeli biste da se pokrene tek nakon što mrežna usluga bude online. Dakle, postavili biste vrijednost Nakon parametar za mrežnu uslugu.

2. Servis

The Servis odjeljak sadrži dva obvezna parametra: ExecStart, Tip, i nekoliko drugih izbornih parametara poput ExecReload, i više.

ExecStart definira naredbu koja će se izvršiti kada se usluga pokrene, dok Tip parametar određuje vrstu procesa koji će se stvoriti.

3. Instalirati

Ovaj odjeljak i njegovi podaci pozivaju se kad god omogućite ili onemogućite uslugu s naredba systemctl.

Ima par parametara. Jedan od uobičajenih i potrebnih je WantedBy. The WantedBy parametar definira ciljne jedinice koje bi se trebale pokrenuti kad god je usluga omogućena. Zadana vrijednost je višekorisnički.target.

Ovdje spomenuti parametri nisu jedini parametri koje možete postaviti u jediničnoj datoteci. Potpuni popis parametara možete dobiti od službena dokumentacija systemd.exec ili upisivanjem čovjek systemd.exec u terminalu.

Datoteka systemd servisne jedinice uvijek završava s ".servis" proširenje i mora se pohraniti u /etc/systemd/system/ imenik. Kreirajte servisnu datoteku pomoću naredbe dodir s povišenim privilegijama stavljanjem prefiksa na sudo naredba:

sudo dodir /etc/systemd/system/.servis 

Sada kada ste stvorili servisnu datoteku, idemo je popuniti potrebnom sintaksom kako bi usluga bila valjana i funkcionalna.

Korak 2: Konfiguriranje servisne datoteke

Za demonstraciju, stvorit ćete ogledni servis koji se izvršava Nmap za skeniranje portova na vašem računalu i pohraniti izlaz u datoteku svakih trideset sekundi. Da biste izvršili ovaj zadatak, evo kako strukturirati datoteku servisne jedinice:

[Jedinica]
Opis=Demonstracija prilagođene nmap usluge.
Nakon=mreža.cilj

[Servis]
Tip=jednostavan
Korisnik=root
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt lokalni host
Restart=uvijek
RestartSec=30

[Instalirati]
WantedBy=multi-user.target

Iako su ovdje spomenuti parametri prethodno objašnjeni, pogledajmo kako oni utječu na našu novostvorenu uslugu i također istražimo nove predstavljene u ovoj jedinici: Ponovno pokretanje, RestartSec, i Korisnik.

Evo što znače parametri u svakom odjeljku:

  • Opis: Čovjeku čitljiv tekst za opis funkcionalnosti usluge.
  • After=network.target: Diktiranje systemd-u o kojem ova usluga ovisi mreža.cilj i trebao bi početi tek nakon mreža.cilj usluga je pokrenuta. Imajte na umu da Nakon ne koristi se za uspostavljanje bilo kakvog odnosa izravne ovisnosti, on jednostavno djeluje kao okidač.
  • Tip=jednostavno: Postoji više vrsta usluga. Međutim, usluga u ovoj demonstraciji je redoviti proces i stoga ga takvim izjavljujemo. Sve različite vrijednosti za ovo možete pronaći na stranici službene dokumentacije s prethodnom poveznicom.
  • Restart=uvijek: To znači da bi se servis uvijek trebao ponovno pokrenuti kad god izađe.
  • RestartSec=30: Ovo postavlja interval između svakog pokretanja usluge na 30 sekundi.
  • Korisnik=root: Ovo definira da će se usluga izvoditi kao root korisnik. U ovom slučaju, ovo je korak koji morate učiniti jer Nmap neće moći raditi bez root privilegija.
  • ExecStart: Ova direktiva sadrži apsolutni put do programa koji treba izvršiti zajedno sa svim potrebnim zastavicama ili argumentima potrebnim za pravilno funkcioniranje programa.
  • WantedBy=multi-user.target: Ovaj parametar u servisnoj datoteci određuje koji bi cilj trebao uključiti ili "želeti" uslugu. Kada je usluga uključena u cilj, to znači da bi se usluga trebala pokrenuti kada sustav dosegne taj cilj tijekom procesa pokretanja. U tom slučaju, usluga bi se trebala pokrenuti kada sustav uđe u višekorisnički način rada. Višekorisnički način rada je stanje u kojem je sustav potpuno pokrenut i omogućuje više korisnika da se prijave i koriste sustav.

Korak 3: Omogućavanje i pokretanje usluge

Sada kada ste izradili jediničnu datoteku, jedini preostali korak za aktivaciju vaše usluge je njezino omogućavanje i pokretanje. Svoju uslugu možete omogućiti i pokrenuti pomoću naredbe systemctl.

Evo kako koristiti systemctl za omogućavanje, pokretanje i provjeru statusa vaše usluge:

sudo systemctl omogućiti .servis
pokretanje sudo systemctl .servis
status sudo systemctl .servis

Sada bi vaša prilagođena usluga trebala raditi! U ovom slučaju, trebali biste vidjeti Nmap skeniranje kako se izvodi svakih trideset sekundi i izlaz se pohranjuje u rezultati.txt datoteku u matičnom direktoriju.

Postavljanje systemd usluge na Linuxu je jednostavno!

Iako se postavljanje prilagođene usluge ispočetka može činiti zastrašujućim u početku, prilično je jednostavan način postavljanja pokrenuti samoizvršivi proces bez nadzora za obavljanje zadataka koji se ponavljaju umjesto vas i poticanje vašeg produktivnost.

U demo usluzi jedva smo zagrebali po površini kako možete konfigurirati i postaviti uslugu. Da biste saznali sve o tome kako možete prilagoditi svoju uslugu, preporučuje se da prođete kroz službenu dokumentaciju povezanu u bilješci.

Ako vam se postavljanje i održavanje usluge čini prevelikim zadatkom, razmislite o alternativnom načinu automatizacije zadataka koji se ponavljaju na Linuxu.