Allt sem þú þarft að vita um ferla í Linux [Alhliða handbók]


Í þessari grein munum við ganga í gegnum grunnskilning á ferlum og skoða stuttlega hvernig á að stjórna ferlum í Linux með því að nota ákveðnar skipanir.

Ferli vísar til forrits í framkvæmd; það er keyrt tilvik af forriti. Það samanstendur af forritaleiðbeiningunum, gögnum sem eru lesin úr skrám, öðrum forritum eða inntak frá kerfisnotanda.

Það eru í grundvallaratriðum tvenns konar ferla í Linux:

  • Forgrunnsferli (einnig nefnt gagnvirk ferli) – þau eru frumstillt og stjórnað í gegnum lokalotu. Með öðrum orðum, það þarf að vera notandi tengdur kerfinu til að hefja slíka ferla; þær hafa ekki byrjað sjálfkrafa sem hluti af kerfisaðgerðum/þjónustum.
  • Bakgrunnsferli (einnig nefnt ógagnvirk/sjálfvirk ferli) – eru ferli sem ekki eru tengd við útstöð; þeir búast ekki við neinu notendainntaki.

Þetta eru sérstakar gerðir af bakgrunnsferlum sem byrja við ræsingu kerfisins og halda áfram að keyra að eilífu sem þjónusta; þeir deyja ekki. Þau eru ræst sem kerfisverkefni (keyrt sem þjónusta), sjálfkrafa. Hins vegar er hægt að stjórna þeim af notanda í gegnum upphafsferlið.

Að búa til ferli í Linux

Nýtt ferli er venjulega búið til þegar núverandi ferli gerir nákvæma afrit af sjálfu sér í minni. Barnaferli mun hafa sama umhverfi og foreldri þess, en aðeins kennitala ferlisins er öðruvísi.

Það eru tvær hefðbundnar leiðir notaðar til að búa til nýtt ferli í Linux:

  • Að nota System() aðgerðina – þessi aðferð er tiltölulega einföld, en hún er óhagkvæm og hefur verulega ákveðna öryggisáhættu í för með sér.
  • Notkun fork() og exec() aðgerða – þessi tækni er svolítið háþróuð en býður upp á meiri sveigjanleika, hraða ásamt öryggi.

Hvernig þekkir Linux ferla?

Vegna þess að Linux er fjölnotendakerfi, sem þýðir að mismunandi notendur geta keyrt ýmis forrit á kerfinu, verður hvert keyrt tilvik af forriti að vera auðkennt á einstakan hátt af kjarnanum.

Og forrit er auðkennt með vinnsluauðkenni þess (PID) sem og foreldraferlisauðkenni (PPID), því er hægt að flokka ferla frekar í:

  • Foreldraferli – þetta eru ferli sem búa til önnur ferli meðan á keyrslu stendur.
  • Undirferlar – þessi ferli eru búin til af öðrum ferlum meðan á keyrslu stendur.

Init ferli er móðir (foreldri) allra ferla á kerfinu, það er fyrsta forritið sem er keyrt þegar Linux kerfið ræsir sig; það stjórnar öllum öðrum ferlum í kerfinu. Það er byrjað af kjarnanum sjálfum, þannig að í grundvallaratriðum hefur það ekki foreldraferli.

Init ferlið hefur alltaf ferli ID 1. Það virkar sem ættleiðingarforeldri fyrir öll munaðarlaus ferli.

Þú getur notað pidof skipunina til að finna auðkenni ferlis:

# pidof systemd
# pidof top
# pidof httpd

Til að finna vinnsluauðkenni og foreldraferlisauðkenni núverandi skeljar skaltu keyra:

$ echo $$
$ echo $PPID

Þegar þú keyrir skipun eða forrit (til dæmis cloudcmd – CloudCommander), mun það hefja ferli í kerfinu. Þú getur hafið forgrunns (gagnvirkt) ferli sem hér segir, það verður tengt við flugstöðina og notandi getur sent inntak það:

# cloudcmd

Til að hefja ferli í bakgrunni (ekki gagnvirkt), notaðu & táknið, hér les ferlið ekki inntak frá notanda fyrr en það er fært í forgrunninn.

# cloudcmd &
# jobs

Þú getur líka sent ferli í bakgrunninn með því að stöðva það með [Ctrl + Z], þetta mun senda SIGSTOP merki til ferlisins og stöðva þannig starfsemi þess; það verður aðgerðalaust:

# tar -cf backup.tar /backups/*  #press Ctrl+Z
# jobs

Til að halda áfram að keyra ofangreinda skipun í bakgrunni, notaðu bg skipunina:

# bg

Til að senda bakgrunnsferli í forgrunn, notaðu fg skipunina ásamt starfsauðkenni eins og svo:

# jobs
# fg %1

Þú gætir líka haft áhuga á: Hvernig á að ræsa Linux stjórn í bakgrunni og aftengja ferli í flugstöðinni

Við framkvæmd breytist ferli úr einu ástandi í annað eftir umhverfi þess/aðstæðum. Í Linux hefur ferli eftirfarandi mögulegar stöður:

  • Í gangi – hér er það annað hvort í gangi (það er núverandi ferli í kerfinu) eða það er tilbúið til að keyra (það bíður þess að vera úthlutað á einn af örgjörvunum).
  • Bið – í þessu ástandi bíður ferli eftir að atburður eigi sér stað eða eftir kerfisauðlind. Að auki gerir kjarninn einnig greinarmun á tvenns konar biðferlum; truflunanleg biðferli – hægt að trufla með merkjum og órofa biðferli – bíða beint eftir vélbúnaðaraðstæðum og ekki er hægt að trufla þær af neinum atburði/merki.
  • Hætt – í þessu ástandi hefur ferli verið stöðvað, venjulega með því að fá merki. Til dæmis ferli sem verið er að kemba.
  • Zombie – hér er ferli dautt, það hefur verið stöðvað en það er enn með færslu í ferlitöflunni.

Það eru nokkur Linux verkfæri til að skoða/skrá ferla í gangi á kerfinu, hinar tvær hefðbundnu og vel þekktu eru efstu skipanir:

Það sýnir upplýsingar um val af virku ferlum á kerfinu eins og sýnt er hér að neðan:

# ps 
# ps -e | head 

kraftmikið rauntímasýn af keyrandi kerfi eins og sýnt er á skjámyndinni hér að neðan:

# top 

Lestu þetta fyrir fleiri helstu notkunardæmi: 12 TOP Command Dæmi í Linux

glances er tiltölulega nýtt kerfiseftirlitstæki með háþróaða eiginleika:

# glances

Fyrir yfirgripsmikla notkunarleiðbeiningar, lestu í gegnum: Glances – Advanced Real Time System Monitoring Tool for Linux

Það eru nokkur önnur gagnleg Linux kerfiseftirlitstæki sem þú getur notað til að skrá virk ferli, opnaðu hlekkinn hér að neðan til að lesa meira um þau:

  1. 20 skipanalínuverkfæri til að fylgjast með afköstum Linux
  2. 13 gagnlegri Linux eftirlitsverkfæri

Hvernig á að stjórna ferlum í Linux

Linux hefur einnig nokkrar skipanir til að stjórna ferlum eins og kill, pkill, pgrep og killall, hér að neðan eru nokkur grunndæmi um hvernig á að nota þær:

$ pgrep -u tecmint top
$ kill 2308
$ pgrep -u tecmint top
$ pgrep -u tecmint glances
$ pkill glances
$ pgrep -u tecmint glances

Til að læra hvernig á að nota þessar skipanir ítarlega, til að drepa/loka virkum ferlum í Linux, opnaðu hlekkina hér að neðan:

  1. Leiðbeiningar um Kill, Pkill og Killall skipanir til að binda enda á Linux ferli
  2. Hvernig á að finna og drepa hlaupandi ferli í Linux

Athugaðu að þú getur notað þau til að drepa ósvörunarforrit í Linux þegar kerfið þitt frýs.

Grundvallarleiðin til að stjórna ferlum í Linux er með því að senda merki til þeirra. Það eru mörg merki sem þú getur sent í ferli til að skoða öll merki sem keyra:

$ kill -l

Til að senda merki til ferlis, notaðu kill, pkill eða pgrep skipanirnar sem við nefndum áðan. En forrit geta aðeins brugðist við merkjum ef þau eru forrituð til að þekkja þessi merki.

Og flest merki eru fyrir innri notkun kerfisins, eða fyrir forritara þegar þeir skrifa kóða. Eftirfarandi eru merki sem eru gagnleg fyrir kerfisnotanda:

  • SIGHUP 1 – sent í ferli þegar stjórnstöð þess er lokuð.
  • SIGINT 2 – sent í ferli með stjórnstöðinni þegar notandi truflar ferlið með því að ýta á [Ctrl+C].
  • SIGQUIT 3 – sent í ferli ef notandinn sendir hætta merki [Ctrl+D].
  • SIGKILL 9 – þetta merki stöðvar (drepur) ferli strax og ferlið mun ekki framkvæma neinar hreinsunaraðgerðir.
  • SIGTERM 15 – þetta er kerfislokunarmerki (drepa sendir þetta sjálfgefið).
  • SIGTSTP 20 – sent í ferli af stjórnstöðinni til að biðja um að það hætti (stöðvunarstöðvun); byrjað af því að notandinn ýtir á [Ctrl+Z].

Eftirfarandi eru dæmi um drepaskipanir til að drepa Firefox forritið með því að nota PID þess þegar það frýs:

$ pidof firefox
$ kill 9 2687
OR
$ kill -KILL 2687
OR
$ kill -SIGKILL 2687  

Til að drepa forrit með því að nota nafn þess, notaðu pkill eða killall eins og svo:

$ pkill firefox
$ killall firefox 

Á Linux kerfinu hafa allir virkir ferlar forgang og ákveðið gott gildi. Ferlar með hærri forgang munu venjulega fá meiri örgjörvatíma en ferli með lægri forgang.

Hins vegar getur kerfisnotandi með rótarréttindi haft áhrif á þetta með nice og renice skipunum.

Frá úttak efstu skipunarinnar sýnir NI ferlið gott gildi:

$ top  

Notaðu nice skipunina til að stilla gott gildi fyrir ferli. Hafðu í huga að venjulegir notendur geta gefið gott gildi frá núlli til 20 til ferla sem þeir eiga.
Aðeins rótnotandinn getur notað neikvæð fín gildi.

Til að draga úr forgangi ferlis, notaðu renice skipunina sem hér segir:

$ renice +8  2687
$ renice +8  2103

Skoðaðu nokkrar gagnlegar greinar okkar um hvernig á að stjórna og stjórna Linux ferlum.

  1. Linux ferlistjórnun: ræsingu, lokun og allt þar á milli
  2. Finndu topp 15 ferla eftir minnisnotkun með „top“ í hópstillingu
  3. Finndu helstu ferla í gangi eftir mestu minni og örgjörvanotkun í Linux
  4. Hvernig á að finna ferli nafn með PID númeri í Linux

Það er allt í bili! Hefur þú einhverjar spurningar eða frekari hugmyndir, deildu þeim með okkur í gegnum athugasemdaformið hér að neðan.