Kuidas RHEL / CentOS 7 buutimisteenuseid automaatselt käivitada?

Huvitav, kuidas hallata teenuseid taustal või alglaadimisel?


Alglaadimisprotsesside haldamise ja käivitamise mehhanismi on muudetud. Kuni RHEL / CentOS 6.x-ni oleksite skripti loonud kataloogis /etc/init.d/ ja selle lubanud chkconfig abil, kuid asjad on teisiti RHEL 7.

See on asendatud süsteemiga ja kuna see on enamikes suuremates Linuxi versioonides vaikeprotsesside haldur, tunneb System Admin, kes on kursis teiste maitsetega, end koduselt. Selles artiklis uurime, mis on systemd, millised olid ümberlülituse põhjused ja kuidas kasutada süsteemide abil taustprotsesse selle seadistamiseks, käitamiseks ja haldamiseks.

Mis on süsteemne?

Kuna kõik Linuxi protsessid on läbipaistvalt nähtavad, siis vaatame, kuhu varitseb systemd. Minu süsteemis saan järgmist:

~ $ ps -ef | grep systemd
juur 1 0 0 Nov11? 00:01:02 / lib / systemd / systemd –system –deserialize 22
teade + 768 1 0 Nov11? 00:05:46 / usr / bin / dbus-deemon –süsteem –aadress = systemd: –nofork –nopidfile –süsteemid-aktiveerimine – ainultsloglog
juur 805 1 0 Nov11? 00:10:22 / lib / systemd / systemd-logind
ankush 1132 1 0 Nov11? 00:00:00 / lib / systemd / systemd –user
ankush 1176 1132 0 Nov11? 00:04:50 / usr / bin / dbus-deemon – otsing – aadress = systemd: –nofork – nopidfile –süsteemid-aktiveerimine – ainultsloglog
ankush 9772 20029 0 21:11 pts / 6 00:00:00 grep –color = auto systemd
systemd + 17298 1 0 Nov19? 00:00:12 / lib / systemd / systemd-lahendatud
systemd + 17303 1 0 Nov19? 00:00:00 / lib / systemd / systemd-timesyncd
juur 17307 1 0 Nov19? 00:00:02 / lib / systemd / systemd-ajakirja
juur 18182 1 0 Nov19? 00:00:00 / lib / systemd / systemd-udevd

Vean kihla, et märkasite seda kohe. esimene protsess loendis käivitati kasutajajuurina ja sellel on pid 1.

Muidugi, see oli esimene protsess, mille süsteem käivitas käivitamisel. Öelge süsteemile tere. ��

Nii et süsteemd on lihtsalt emaprotsess, mis käivitab, haldab ja lõpetab süsteemis ka muid protsesse, lisaks pakub teavet nende logimise, failisüsteemi olekute jne kohta..

Märkuse nime kohta küll. Nimi on tõepoolest süsteemne ja mitte System D ega midagi muud. „D” tähistab deemoni, tavalist Linuxi protsessi, mis töötab taustal (varitseb?) Ja pole ühegi terminalisessiooniga seotud.

Miks lülitus RHEL süsteemile?

Nagu me juba arutasime, on systemd süsteemi ja protsesside haldur ning asendab RHEL 7-s tuntud programmi Upstart. Miks RHEL (Oracle?) Selle otsuse tegi? Noh, selleks on väga head põhjused, nii et vaatame kiiresti.

Paralleelse teenuse käivitamine

Kuna programmile SysV init ei meeldi, on systemd võimeline paralleelselt teenuseid käivitama. Init programm seevastu käivitab need ükshaaval. Ajastul, kus isegi mobiilsetel seadmetel on mitmetuumalised protsessorid, on paralleelse initsialiseerimise puudumine suur väljalülitus.

Dünaamiline (kuum) teenusehaldus

Kui olete märganud, et USB-draivid tuleb selgelt ühendada varasematesse Fedora-süsteemidesse, samal ajal kui need Ubuntu ja sarnaste jaotuste korral automaatselt avanevad, on põhjus süsteemitud. See on võimeline tuvastama reaalajas toimunud muutusi riistvaras ja vajaduse korral teenuseid lõpetama / käivitama. Mõni võib väita, et see on tarbetu, kuid paljude jaoks on teretulnud kõik, mis vähendab kognitiivset koormust.

Edasilükatud teenuse käivitamine

systemd muudab buutimisajad lühemaks, kuna see suudab teenuse käivitamise edasi lükata siis, kui seda tegelikult vaja on. Lihtne näide on võrgufailisüsteemiga seotud teenused. Kui võrgustatud ketast pole saadaval, pole teenuse loomine ja käitamine mõttekas.

Kiirem protsessisuhtlus

Süsteemide paralleelsed võimalused kanduvad üle protsessidevahelisse suhtlusse. systemd suudab pakkuda paralleelset juurdepääsu pistikupesadele ja süsteemibussile, vähendades oluliselt sideressursside protsesside ooteaegu.

Automaatne taaskäivitus

Kui teenus jookseb kokku, suudab süsteemid selle tuvastada ja proovida seda taaskäivitada. Enamasti on rakenduse taasfunktsioneerimiseks vaja lihtsat taaskäivitust, välja arvatud juhul, kui on olulisemaid probleeme.

Igatahes lihtsustab systemd siin administraatori elu.

systemd RHEL7-s – Mis muutub Sysadminsi jaoks?

Kui teil on närune tunne, et süsteem ei tähenda kõiki helisid, on teil õigus. RHEL sysadmin võib üllatusena tabada mõnda olulist kokkusobimatust. Vaatame kiiresti.

Piiratud töötaseme tugi

systemd omab üsna tasemel räpast äratundmist ja tuge jooksutasanditele. Kõiki käitustasemeid ei toetata ja mõne sihtmärgi korral võib neid isegi mitte olla. Sellistel juhtudel tagastab systemd vastusena käitustaseme käskudele “N”, mis tähendab, et sellel sihtmärgil pole vastavat käitustaset. Kokkuvõttes soovitab Red Hat meil mitte kasutada (!) Käitamiskäske.

Pole kohandatud käske

See teeb haiget. Üks suur pluss SysV-ga oli võime määratleda kohandatud käsud, et pakkuda protsesside haldamiseks paremat funktsionaalsust. Süsteemiga pole sellist võimalust olemas ja olete algusest, peatusest, olekust, taaskäivitamisest jne kinni.

Ainult perele mõeldud ja mitte-interaktiivne

systemd (muidugi) jälgib käivitatud protsesse ja salvestab nende PID-d. Väljakutse on aga see, et süsteemid ei saa hakkama protsessidega, mida ta pole käivitanud. Lisaks pole kasutajal võimalik suhelda süsteemiga alustatud protsessiga. Kogu väljund läheb kataloogi / dev / null, peatades tõhusalt kõik lootused, mis teil võisid olla väljundi hõivamiseks.

Konteksti pole

Erinevalt init-teenustest ei päri need, mille käivitas systemd, mitte ühtegi süsteemi süsteemi kasutajalt. Teisisõnu, selline teave nagu PATH ja muud süsteemimuutujad pole saadaval ja iga uus protsess käivitatakse tühjas kontekstis.

Kui see piirangute loetelu paneb teid nutma, pole te jällegi üksi. systemd on olnud Linuxi maailmas polariseeriv jõud ja Google’il “systemd imeb” on palju lugemismaterjali. ��

Kuidas teenust automaatselt käivitada, kui maas pole?

Siin on juurutamine üsna tavaline juhtum. Peame programmi deemoniseerima keeles, millel pole pikaajalisi protsesse: PHP! Oletame, et kirjutan sissetuleva veebipaigaühenduste haldamiseks PHP-skripti (lõime ju vestlusrakenduse!) Ja skript asub aadressil /home/ankush/chat_server/index.php.

Kuna veebipõhised ühendused võivad serverit igal ajal lüüa, peab see protsess olema kogu aeg üles lülitatud ja sissetulevaid ühendusi jälgima. Meil ei saa siin olla tavapärast PHP elutsüklit, kuna WebSockets on olekuühendused ja kui skript sureb, on see ühendus loend. Igatahes piisavalt veebipoodides; vaatame, kuidas meil see skript süsteemide kaudu deemoniseeritakse.

Kõik süsteemiteenused asuvad kataloogis / etc / systemd / system, nii et loome seal faili meie veebiserveri skripti kirjeldamiseks. Eeldusel, et olete sisse logitud juurkasutajana.

# vi /etc/systemd/system/chat_server.service

ja siis on vaja järgmist.

[Ühik]
Kirjeldus = vestlusserveri teenus
Pärast = võrk.target

[Teenus]
Tüüp = lihtne
Kasutaja = ankush
ExecStart = php /home/ankush/chat_server/index.php
Taaskäivita = katkestamine

[Installi]
WantedBy = mitme kasutajaga.target

Salvestage fail ja järgmine samm on systemd-deemoni uuesti laadimine

# systemctl deemon-reload

ja just meie loodud teenuse käivitamiseks:

# systemctl käivitab vestlusserveri

Kui te ei näe vigu, siis see oligi!

Vaatame kiiresti ka seda, mida erinevad failis sisalduvad direktiivid tähendavad:

  • Osa [Ühik] määratleb süsteemi jaoks uue teenindusüksuse. Süsteemses käändes nimetatakse kõiki teenuseid teenuseüksusteks.
  • Pärast direktiivi (ettearvatavalt) käsib systemd käivitada see teenus alles pärast võrguteenuste käivitamist (vastasel juhul kes haldab pistikupesa ühendusi madalamal tasemel?!).
  • Tüüp = lihtne teatab süsteemis, et see teenus ei peaks ise ennast kahvlihaarama. Teisisõnu, igal ajahetkel töötab ainult üks eksemplar.
  • Kasutaja = ankush tähendab seda teenust kui kasutajat “ankush”. Võiksime selle muuta „juuriks”, kuid turvalisuse seisukohast on see väga soovimatu.
  • ExecStart, nagu võite öelda, on tegelik käsk, mida käivitada.
  • Taaskäivita = katkestatud tähendab, et teenust tuleks katkestada uuesti. PHP-s lekivad pikaajalised protsessid mälu ja lõpuks plahvatavad, seega on seda vaja.
  • WantedBy = direktiiv annab süsteemidele teada, millisesse sihtrühma (mõelge gruppidele) see teenus kuulub. Selle tulemuseks on sümboliliste linkide loomine selle eesmärgi sees teenuse osutamiseks.

Üldiselt piisab sellest palju taustprotsesside käivitamiseks, kasutades süsteemis RHEL 7.

Veel suvand loogika taaskäivitamiseks

Ülaltoodud näites olen konfigureerinud taaskäivitamise = katkestatud, kuid see pole ainus võimalus. Neid on rohkem ja vali vastavalt nõudele.

  • rikke korral – taaskäivitatakse, kui ränk väljumiskood või signaal on tühi
  • alati – taaskäivitage, kui signaal on leitud, puhas või puhastamata signaal
  • ebanormaalne – räpane signaal, valvekoer või ajalõpp
  • õnnestumisel – ainult siis, kui selle peatas puhas signaal või väljumiskood

Teenuse konfigureerimine alglaadimiseks

Kui olete skriptiga rahul ja veendunud, et see töötab, siis soovite seda seejärel konfigureerida, nii et see käivitub ja käivitub.

Minge kausta / etc / systemd / system ja täitke allpool käsk luba (ärge unustage .service-faili nime oma nimega muuta)

# systemctl lubab chat_server.service

Näete kinnitust, et see on loonud sümboli.

Loodud link link /etc/systemd/system/multi-user.target.wants/chat_server.service saidile /etc/systemd/system/chat_server.service.

Taaskäivitage server ja peaksite nägema teenuse käivitamist alglaadimisel.

See oli lihtne! Kas pole??

Appi! Olen tohutult investeerinud Upstartisse. ��

Ma saan aru, et usaldate mind, teie juhtum on pigem norm kui erand. RHEL on Upstartit kasutanud nii kaua, et lüliti tundub peaaegu nagu reetmine. Kuid hei, süsteemid muutuvad pidevalt ja me ei peaks trügima. Red Hat tunnistab, et paljud inimesed on vanemate versioonidega ummikus ja on loonud rändejuhend millele peaksite kindlasti viitama.

Üks kokkuhoidev arm selles osas on see, et systemd ühildub SysV init-skriptidega, nii et enamasti peate lihtsalt oma faile teisaldama ja kasutama samu teenuseid.

Kas soovite lisateavet Linuxi administreerimise ja tõrkeotsingu kohta? Vaadake seda veebikursus.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map