Hvernig á að drepa Linux ferli með því að nota Kill, Pkill og Killall


Linux stýrikerfi kemur með kill skipun til að stöðva ferli. Skipunin gerir það mögulegt að halda áfram að keyra netþjóninn án þess að þurfa að endurræsa eftir meiriháttar breytingu/uppfærslu. Hér kemur hinn mikli kraftur Linux og þetta er ein af ástæðunum fyrir því að Linux keyrir á 96,4% netþjóna á jörðinni.

Kill skipun sendir merki, tilgreint merki til ferli sem er í gangi. Kill skipunina er hægt að framkvæma á ýmsa vegu, beint eða úr skeljaforskrift.

[Þér gæti líka líkað við: Finndu 15 bestu ferlana eftir minnisnotkun með „topp“ í lotuham ]

Með því að nota drápsskipun frá /usr/bin færðu aukalega eiginleika til að drepa ferli með ferlisheiti með því að nota pkill.

Algeng setningafræði fyrir kill skipun er:

# kill [signal or option] PID(s)

Fyrir drepaskipun gæti merkisheiti verið:

Signal Name		Signal Value			Behaviour

SIGHUP			      1				Hangup
SIGKILL			      9				Kill Signal
SIGTERM			      15			Terminate

Augljóslega af hegðuninni hér að ofan er SIGTERM sjálfgefna og öruggasta leiðin til að drepa ferli. SIGHUP er óöruggari leið til að drepa ferli en SIGTERM. SIGKILL er óöruggasta leiðin af ofangreindum þremur, til að drepa ferli sem lýkur ferli án þess að vista.

Til þess að drepa ferli þurfum við að vita vinnsluauðkenni ferlis. Ferli er dæmi um forrit. Í hvert skipti sem forrit byrjar er sjálfkrafa búið til einstakt PID fyrir það ferli.

Sérhver ferli í Linux er með pid. Fyrsta ferlið sem byrjar þegar Linux System er ræst er - init ferlið, þess vegna er því úthlutað gildinu '1' í flestum tilfellum.

[Þér gæti líka líkað við: Allt sem þú þarft að vita um ferla í Linux [Alhliða handbók] ]

Init er meistaraferlið og ekki er hægt að drepa það á þennan hátt, sem tryggir að aðalferlið drepist ekki fyrir slysni. Init ákveður og leyfir sér að drepa sig, þar sem drep er aðeins beiðni um lokun.

Listaðu yfir alla Linux ferla í gangi

Til að þekkja alla ferlana og samsvarandi úthlutað pid þeirra skaltu keyra eftirfarandi ps skipun.

# 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

Hvernig væri að sérsníða ofangreint framleiðsla með því að nota setningafræði sem „pidof ferli“.

# pidof mysqld
1684

Önnur leið til að ná ofangreindu markmiði er að fylgja setningafræðinni hér að neðan.

# 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

[Þér gæti líka líkað við: Hvernig á að finna 15 bestu ferla eftir minnisnotkun í Linux]

Hvernig á að drepa ferli í Linux

Áður en við stígum á undan og framkvæmum drápsskipun, ber að hafa í huga nokkur mikilvæg atriði:

  • Notandi getur drepið alla ferla sína.
  • Notandi getur ekki drepið ferli annars notanda.
  • Notandi getur ekki drepið ferli sem kerfið notar.
  • Rótnotandi getur drepið ferli á kerfisstigi og ferli hvaða notanda sem er.

Önnur leið til að framkvæma sömu aðgerð er að framkvæma 'pgrep' skipunina.

# pgrep mysql
3139

Til að drepa ofangreind ferli PID, notaðu drepa skipunina eins og sýnt er.

kill -9 3139

Ofangreind skipun mun drepa ferlið með pid=3139, þar sem PID er tölugildi ferlisins.

Önnur leið til að framkvæma sömu aðgerð er hægt að endurskrifa sem.

# kill -SIGTERM 3139

Á sama hátt er 'drepa -9 PID' svipað og 'drepa -SIGKILL PID' og öfugt.

Hvernig á að drepa ferli í Linux með því að nota ferli nafn

Þú verður að vera meðvitaður um nafn ferlisins, áður en þú drepur og slærð inn rangt ferlisheiti gæti það ruglað þig.

# pkill mysqld

Drepa fleiri en eitt ferli í einu.

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

Hvað ef ferli hefur of mörg tilvik og fjölda barnaferla, þá höfum við skipunina „killall“ eða pkill. Þessar tvær eru einu skipanir þessarar fjölskyldu, sem tekur ferli nafn sem rök í stað ferlisnúmers.

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

Til að drepa öll mysql tilvik ásamt barnaferlum skaltu nota skipunina sem hér segir.

# killall mysqld
OR
# pkill mysqld

Þú getur alltaf staðfest stöðu ferlisins hvort það er í gangi eða ekki, með því að nota einhverja af neðangreindum skipunum.

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

Það er allt í bili, frá minni hlið. Ég mun fljótlega vera hér aftur með annað áhugavert og fræðandi efni. Þangað til, fylgstu með, tengdur við Tecmint og heilbrigður. Ekki gleyma að gefa dýrmæt álit þitt í athugasemdahlutanum.