Jinsi ya Kuua Mchakato wa Linux Kwa Kutumia Kill, Pkill, na Killall


Mfumo wa Uendeshaji wa Linux unakuja na amri ya kuua ili kusitisha mchakato. Amri inafanya uwezekano wa kuendelea kuendesha seva bila hitaji la kuanzisha upya baada ya mabadiliko makubwa/sasisho. Hapa inakuja nguvu kubwa ya Linux na hii ni moja ya sababu, kwa nini Linux inaendesha kwenye 96.4% ya seva, kwenye sayari.

Amri ya kuua hutuma ishara, ishara maalum kwa mchakato unaoendelea sasa. Amri ya kuua inaweza kutekelezwa kwa njia kadhaa, moja kwa moja au kutoka kwa hati ya ganda.

[ Unaweza pia kupenda: Tafuta Michakato 15 Bora kwa Matumizi ya Kumbukumbu yenye ‘juu’ katika Hali ya Kundi ]

Kutumia kill amri kutoka /usr/bin hukupa kipengee cha ziada kuua mchakato kwa jina la mchakato kwa kutumia pkill.

Syntax ya kawaida ya kuua amri ni:

# kill [signal or option] PID(s)

Kwa amri ya kuua Jina la Ishara linaweza kuwa:

Signal Name		Signal Value			Behaviour

SIGHUP			      1				Hangup
SIGKILL			      9				Kill Signal
SIGTERM			      15			Terminate

Ni wazi kutokana na tabia iliyo hapo juu, SIGTERM ndiyo njia chaguo-msingi na salama zaidi ya kuua mchakato. SIGHUP ni njia salama kidogo ya kuua mchakato kuliko SIGTERM. SIGKILL ndiyo njia isiyo salama zaidi kati ya hizo tatu zilizo hapo juu, kuua mchakato unaokatisha mchakato bila kuokoa.

Ili kuua mchakato, tunahitaji kujua Kitambulisho cha Mchakato cha mchakato. Mchakato ni mfano wa programu. Kila wakati programu inapoanza, PID ya kipekee inatolewa kiotomatiki kwa mchakato huo.

Kila Mchakato katika Linux una pid. Mchakato wa kwanza unaoanza wakati Mfumo wa Linux unapoanzishwa ni - mchakato wa init, kwa hivyo hupewa thamani ya '1' mara nyingi.

[Unaweza pia kupenda: Yote Unayohitaji Kujua Kuhusu Mchakato katika Linux [Mwongozo wa Kina] ]

Init ni mchakato mkuu na hauwezi kuuawa kwa njia hii, ambayo inahakikisha kwamba mchakato mkuu hauuawi kwa bahati mbaya. Init huamua na kujiruhusu kuuawa, ambapo kuua ni ombi la kuzima tu.

Orodhesha Michakato Yote ya Linux inayoendesha

Ili kujua michakato yote na sawa pid waliyopewa, endesha amri ifuatayo ya ps.

# ps -A
PID TTY          TIME CMD
    1 ?        00:00:01 init
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 migration/0
    4 ?        00:00:00 ksoftirqd/0
    5 ?        00:00:00 migration/0
    6 ?        00:00:00 watchdog/0
    7 ?        00:00:01 events/0
    8 ?        00:00:00 cgroup
    9 ?        00:00:00 khelper
   10 ?        00:00:00 netns
   11 ?        00:00:00 async/mgr
   12 ?        00:00:00 pm
   13 ?        00:00:00 sync_supers
   14 ?        00:00:00 bdi-default
   15 ?        00:00:00 kintegrityd/0
   16 ?        00:00:00 kblockd/0
   17 ?        00:00:00 kacpid
   18 ?        00:00:00 kacpi_notify
   19 ?        00:00:00 kacpi_hotplug
   20 ?        00:00:00 ata/0
   21 ?        00:00:00 ata_aux
   22 ?        00:00:00 ksuspend_usbd

Vipi kuhusu Kubinafsisha pato hapo juu kwa kutumia syntax kama 'mchakato wa pidof'.

# pidof mysqld
1684

Njia nyingine ya kufikia lengo hapo juu ni kufuata syntax iliyo hapa chini.

# ps aux | grep mysqld
root      1582  0.0  0.0   5116  1408 ?        S    09:49   0:00 
/bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql 
--socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid 
--basedir=/usr --user=mysql

mysql     1684  0.1  0.5 136884 21844 ?        Sl   09:49   1:09 
/usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql 
--log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid 
--socket=/var/lib/mysql/mysql.sock

root     20844  0.0  0.0   4356   740 pts/0    S+   21:39   
0:00 grep mysqld

[Unaweza pia kupenda: Jinsi ya Kupata Michakato 15 Bora kwa Matumizi ya Kumbukumbu katika Linux]

Jinsi ya kuua Mchakato katika Linux

Kabla hatujasonga mbele na kutekeleza amri ya kuua, mambo muhimu ya kuzingatiwa:

  • Mtumiaji anaweza kuua michakato yake yote.
  • Mtumiaji hawezi kuua mchakato wa mtumiaji mwingine.
  • Mtumiaji hawezi kuua michakato ambayo Mfumo unatumia.
  • Mtumiaji wa mizizi anaweza kuua mchakato wa kiwango cha Mfumo na mchakato wa mtumiaji yeyote.

Njia nyingine ya kufanya kazi sawa ni kutekeleza amri ya 'pgrep'.

# pgrep mysql
3139

Ili kuua mchakato wa hapo juu wa PID, tumia amri ya kuua kama inavyoonyeshwa.

kill -9 3139

Amri hapo juu itaua mchakato wa kuwa na pid=3139, ambapo PID ni Nambari ya Thamani ya mchakato.

Njia nyingine ya kufanya kazi sawa inaweza kuandikwa tena kama.

# kill -SIGTERM 3139

Vile vile ‘ua -9 PID’ ni sawa na ‘ua -SIGKILL PID’ na kinyume chake.

Jinsi ya Kuua Mchakato katika Linux Kwa Kutumia Jina la Mchakato

Ni lazima ufahamu jina la mchakato, kabla ya kuua na kuingiza jina lisilo sahihi la mchakato kunaweza kukusonga.

# pkill mysqld

Kuua zaidi ya mchakato mmoja kwa wakati mmoja.

# kill PID1 PID2 PID3
or
# kill -9 PID1 PID2 PID3
or
# kill -SIGKILL PID1 PID2 PID3

Je, ikiwa mchakato una matukio mengi sana na idadi ya michakato ya watoto, tuna amri ya 'killall' au pkill. Hizi mbili ndizo amri za pekee za familia hii, ambayo huchukua jina la mchakato kama hoja badala ya nambari ya mchakato.

# killall [signal or option] Process Name
Or
# pkill Process Name

Ili kuua hali zote za mysql pamoja na michakato ya mtoto, tumia amri kama ifuatavyo.

# killall mysqld
OR
# pkill mysqld

Unaweza kuthibitisha hali ya mchakato kila wakati ikiwa inaendeshwa au la, kwa kutumia mojawapo ya amri zilizo hapa chini.

# service mysql status
OR
# systemctl status mysql
# pgrep mysql
# ps -aux | grep mysql

Hiyo ni yote kwa sasa, kutoka kwa upande wangu. Hivi karibuni nitakuwa hapa tena na mada nyingine ya Kuvutia na Kuelimisha. Hadi Wakati huo, endelea kufuatilia, kushikamana na Tecmint, na ukiwa na afya njema. Usisahau kutoa maoni yako muhimu katika sehemu ya maoni.