Wote Unahitaji Kujua Kuhusu Mchakato katika Linux [Mwongozo Kamili]


Katika makala haya, tutapitia ufahamu wa kimsingi wa michakato na tutaangalia kwa ufupi jinsi ya kudhibiti michakato katika Linux kwa kutumia amri fulani.

Mchakato unarejelea programu inayotekelezwa; ni mfano unaoendeshwa wa programu. Imeundwa na maagizo ya programu, data iliyosomwa kutoka kwa faili, programu zingine au pembejeo kutoka kwa mtumiaji wa mfumo.

Kuna kimsingi aina mbili za michakato katika Linux:

  • Michakato ya mandhari ya mbele (pia inajulikana kama michakato shirikishi) - hizi huanzishwa na kudhibitiwa kupitia kipindi cha mwisho. Kwa maneno mengine, lazima kuwe na mtumiaji aliyeunganishwa kwenye mfumo ili kuanza michakato kama hii; hazijaanza kiotomatiki kama sehemu ya kazi/huduma za mfumo.
  • Michakato ya usuli (pia inajulikana kama michakato isiyoingiliana/otomatiki) - ni michakato ambayo haijaunganishwa kwenye terminal; hawatarajii mchango wowote wa mtumiaji.

Hizi ni aina maalum za michakato ya usuli ambayo huanza wakati mfumo unaanza na kuendelea kufanya kazi milele kama huduma; hawafi. Huanzishwa kama kazi za mfumo (huendeshwa kama huduma), moja kwa moja. Walakini, zinaweza kudhibitiwa na mtumiaji kupitia mchakato wa init.

Uundaji wa Michakato katika Linux

Mchakato mpya kawaida huundwa wakati mchakato uliopo hutengeneza nakala yake yenyewe kwenye kumbukumbu. Mchakato wa mtoto utakuwa na mazingira sawa na mzazi wake, lakini nambari ya kitambulisho cha mchakato pekee ndiyo tofauti.

Kuna njia mbili za kawaida zinazotumiwa kuunda mchakato mpya katika Linux:

  • Kutumia Kitendaji cha Mfumo() - njia hii ni rahisi, hata hivyo, haifai na ina hatari fulani za usalama.
  • Kutumia fork() na exec() Utendakazi - mbinu hii ni ya juu kidogo lakini inatoa unyumbulifu zaidi, kasi, pamoja na usalama.

Je! Linux Hutambuaje Michakato?

Kwa sababu Linux ni mfumo wa watumiaji wengi, ikimaanisha kuwa watumiaji tofauti wanaweza kuwa wakiendesha programu mbalimbali kwenye mfumo, kila mfano unaoendeshwa wa programu lazima utambuliwe kipekee na kernel.

Na programu inatambuliwa na kitambulisho chake cha mchakato (PID) na vile vile kitambulisho cha michakato ya mzazi (PPID), kwa hivyo michakato inaweza kuainishwa katika:

  • Michakato ya mzazi - hizi ni michakato ambayo huunda michakato mingine wakati wa utekelezaji.
  • Michakato ya watoto - michakato hii inaundwa na michakato mingine wakati wa utekelezaji.

Mchakato wa Init ni mama (mzazi) wa michakato yote kwenye mfumo, ni programu ya kwanza ambayo inatekelezwa wakati mfumo wa Linux unapojifungua; inasimamia michakato mingine yote kwenye mfumo. Imeanzishwa na kernel yenyewe, kwa hivyo kimsingi haina mchakato wa mzazi.

Mchakato wa init huwa na kitambulisho cha 1 cha mchakato. Hufanya kazi kama mzazi mlezi kwa michakato yote ya watoto yatima.

Unaweza kutumia pidof amri kupata kitambulisho cha mchakato:

# pidof systemd
# pidof top
# pidof httpd

Ili kupata kitambulisho cha mchakato na kitambulisho cha mchakato wa mzazi wa ganda la sasa, endesha:

$ echo $$
$ echo $PPID

Mara tu unapoendesha amri au programu (kwa mfano cloudcmd - CloudCommander), itaanza mchakato katika mfumo. Unaweza kuanza mchakato wa mbele (maingiliano) kama ifuatavyo, itaunganishwa kwenye terminal na mtumiaji anaweza kutuma ingizo:

# cloudcmd

Ili kuanza mchakato chinichini (usio mwingiliano), tumia alama ya &, hapa, mchakato huo hausomi ingizo kutoka kwa mtumiaji hadi uhamishwe kwa sehemu ya mbele.

# cloudcmd &
# jobs

Unaweza pia kutuma mchakato kwa usuli kwa kuusimamisha kwa kutumia [Ctrl + Z], hii itatuma mawimbi ya SIGSTOP kwa mchakato, na hivyo kusimamisha shughuli zake; inakuwa bila kazi:

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

Ili kuendelea kutekeleza amri iliyosimamishwa hapo juu nyuma, tumia bg amri:

# bg

Kutuma mchakato wa usuli kwa mandhari ya mbele, tumia fg amri pamoja na kitambulisho cha kazi kama hivyo:

# jobs
# fg %1

Unaweza pia kupenda: Jinsi ya Kuanzisha Amri ya Linux kwa Usuli na Mchakato wa Kuondoa kwenye terminal

Wakati wa utekelezaji, mchakato hubadilika kutoka hali moja hadi nyingine kulingana na mazingira/mazingira yake. Katika Linux, mchakato una hali zifuatazo zinazowezekana:

  • Inaendesha - hapa inaendeshwa (ni mchakato wa sasa katika mfumo) au iko tayari kufanya kazi (inasubiri kukabidhiwa moja ya CPU).
  • Inasubiri - katika hali hii, mchakato unasubiri tukio kutokea au rasilimali ya mfumo. Zaidi ya hayo, punje pia hutofautisha kati ya aina mbili za michakato ya kusubiri; michakato ya kusubiri inayokatizwa - inaweza kukatizwa na mawimbi na michakato ya kusubiri isiyokatizwa - inasubiri moja kwa moja kwenye hali ya maunzi na haiwezi kuingiliwa na tukio/ ishara yoyote.
  • Imesimamishwa - katika hali hii, mchakato umesimamishwa, kwa kawaida kwa kupokea ishara. Kwa mfano, mchakato ambao unatatuliwa.
  • Zombie - hapa, mchakato umekufa, umesitishwa lakini bado una ingizo katika jedwali la mchakato.

Kuna zana kadhaa za Linux za kutazama/kuorodhesha michakato inayoendesha kwenye mfumo, mbili za kitamaduni na zinazojulikana ni amri za juu:

Inaonyesha habari kuhusu uteuzi wa michakato inayotumika kwenye mfumo kama inavyoonyeshwa hapa chini:

# ps 
# ps -e | head 

mwonekano wa wakati halisi wa mfumo unaoendesha kama inavyoonyeshwa kwenye picha ya skrini hapa chini:

# top 

Soma hii kwa mifano ya juu zaidi ya utumiaji: Mifano 12 ya Amri ya TOP kwenye Linux

kutazama ni zana mpya ya ufuatiliaji wa mfumo iliyo na vipengele vya juu:

# glances

Kwa mwongozo wa kina wa utumiaji, soma: Kuangalia - Zana ya Juu ya Ufuatiliaji wa Mfumo wa Wakati Halisi kwa Linux.

Kuna zana zingine kadhaa muhimu za ufuatiliaji wa mfumo wa Linux unaweza kutumia kuorodhesha michakato inayotumika, fungua kiunga kilicho hapa chini ili kusoma zaidi kuzihusu:

  1. Zana 20 za Mstari wa Amri za Kufuatilia Utendaji wa Linux
  2. Zana 13 Muhimu Zaidi za Ufuatiliaji wa Linux

Jinsi ya Kudhibiti Michakato katika Linux

Linux pia ina maagizo kadhaa ya kudhibiti michakato kama vile kuua, pkill, pgrep na killall, hapa chini kuna mifano michache ya jinsi ya kuzitumia:

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

Ili kujifunza jinsi ya kutumia amri hizi kwa kina, kuua/kukatisha michakato inayotumika katika Linux, fungua viungo vilivyo hapa chini:

  1. Mwongozo wa Kuua, Pkill na Killall Amri za Kukomesha Mchakato wa Linux
  2. Jinsi ya Kupata na Kuua Michakato ya Uendeshaji katika Linux

Kumbuka kuwa unaweza kuzitumia kuua programu ambazo hazijibiki kwenye Linux mfumo wako unapoganda.

Njia ya msingi ya kudhibiti michakato katika Linux ni kwa kutuma ishara kwao. Kuna ishara nyingi ambazo unaweza kutuma kwa mchakato, ili kutazama ishara zote zinazoendeshwa:

$ kill -l

Kutuma ishara kwa mchakato, tumia kill, pkill au pgrep amri tulizotaja hapo awali. Lakini programu zinaweza tu kujibu mawimbi ikiwa zimepangwa kutambua ishara hizo.

Na ishara nyingi ni za matumizi ya ndani na mfumo, au kwa watengeneza programu wakati wanaandika nambari. Zifuatazo ni ishara ambazo ni muhimu kwa mtumiaji wa mfumo:

  • SIGHUP 1 - imetumwa kwa mchakato wakati kidhibiti chake kimefungwa.
  • SIGINT 2 – inatumwa kwa mchakato na kidhibiti chake mtumiaji anapokatiza mchakato kwa kubofya [Ctrl+C].
  • SIGQUIT 3 - imetumwa kwa mchakato ikiwa mtumiaji atatuma ishara ya kuacha [Ctrl+D].
  • SIGKILL 9 – mawimbi haya hukatisha (kuua) mchakato mara moja na mchakato hautafanya shughuli zozote za kusafisha.
  • SIGTERM 15 – hii ni ishara ya kusitisha programu (kill itatuma hii kwa chaguomsingi).
  • SIGTSTP 20 - imetumwa kwa mchakato na terminal yake ya kudhibiti kuiomba ikome (kusimamishwa kwa kituo); iliyoanzishwa na mtumiaji kubonyeza [Ctrl+Z].

Ifuatayo ni mifano ya maagizo ya kuua programu ya Firefox kwa kutumia PID yake mara tu inapoganda:

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

Ili kuua programu kwa kutumia jina lake, tumia pkill au killall kama hivyo:

$ pkill firefox
$ killall firefox 

Kwenye mfumo wa Linux, michakato yote inayotumika ina kipaumbele na thamani fulani nzuri. Michakato yenye kipaumbele cha juu kwa kawaida itapata muda zaidi wa CPU kuliko michakato ya kipaumbele cha chini.

Walakini, mtumiaji wa mfumo aliye na haki za mizizi anaweza kuathiri hii na amri nzuri na za kupendeza.

Kutoka kwa matokeo ya amri ya juu, NI inaonyesha mchakato thamani nzuri:

$ top  

Tumia amri nzuri kuweka thamani nzuri kwa mchakato. Kumbuka kwamba watumiaji wa kawaida wanaweza kuhusisha thamani nzuri kutoka sifuri hadi 20 kwa michakato wanayomiliki.
Mtumiaji wa mizizi pekee ndiye anayeweza kutumia maadili hasi mazuri.

Ili kurejesha kipaumbele cha mchakato, tumia amri ya renice kama ifuatavyo:

$ renice +8  2687
$ renice +8  2103

Angalia baadhi ya makala zetu muhimu kuhusu jinsi ya kudhibiti na kudhibiti michakato ya Linux.

  1. Udhibiti wa Mchakato wa Linux: Anzisha, Zima, na Kila Kitu Kati
  2. Tafuta Michakato 15 Bora kwa Matumizi ya Kumbukumbu na ‘juu’ katika Hali ya Kundi
  3. Tafuta Michakato ya Uendeshaji Bora kwa Kumbukumbu ya Juu na Matumizi ya CPU katika Linux
  4. Jinsi ya Kupata Jina la Mchakato kwa Kutumia Nambari ya PID kwenye Linux

Ni hayo tu kwa sasa! Je, una maswali yoyote au mawazo ya ziada, yashiriki nasi kupitia fomu ya maoni hapa chini.