Kill, Pkill we Killall ulanyp Linux prosessini nädip öldürmeli


Linux operasiýa ulgamy, bir prosesi bes etmek üçin öldürmek buýrugy bilen gelýär. Buýruk, düýpli üýtgeşme/täzelenmeden soň gaýtadan açmak zerurlygy bolmazdan serweri işletmegi dowam etdirmäge mümkinçilik berýär. Linux-yň uly güýji gelýär we Linux-yň planetadaky serwerleriň 96,4% -inde işlemeginiň sebäplerinden biri.

Kill buýrugy häzirki işleýän prosese signal, kesgitlenen signal iberýär. Öldürmek buýrugy gönüden-göni ýa-da gabyk skriptinden birnäçe usul bilen ýerine ýetirilip bilner.

[Şeýle hem halamagyňyz mümkin: Batch rejesinde “ýokarky” bilen ýat ulanylyşy boýunça iň gowy 15 prosesi tapyň]

/ Usr/bin-den kill buýrugyny ulanmak, pkill ulanyp, prosessiň ady bilen bir prosesi öldürmek üçin goşmaça aýratynlyk berýär.

Öldürmek buýrugy üçin umumy sintaksis:

# kill [signal or option] PID(s)

Öldürmek buýrugy üçin Signal ady bolup biler:

Signal Name		Signal Value			Behaviour

SIGHUP			      1				Hangup
SIGKILL			      9				Kill Signal
SIGTERM			      15			Terminate

Aboveokardaky özüni alyp barşyndan SIGTERM bir prosesi öldürmegiň esasy we iň ygtybarly usulydygy aýdyňdyr. SIGHUP, SIGTERM-den has ygtybarly bir usul. SIGKILL, ýokardaky üçüsiniň arasynda iň amatly usul, tygşytlamazdan bir prosesi bes edýän prosesi öldürmek.

Bir prosesi öldürmek üçin bir prosesiň Prosess ID-ni bilmeli. Amal programmanyň mysalydyr. Her gezek bir programma başlanda, bu amal üçin awtomatiki usulda özboluşly PID döredilýär.

Linux-daky her bir prosesiň pidasy bar. Linux ulgamy ýüklenende başlaýan ilkinji proses - init prosesi, şonuň üçin köp halatlarda oňa “1” bahasy berilýär.

[Şeýle hem halamagyňyz mümkin: Linux-daky prosesler barada bilmeli zatlaryňyz [Giňişleýin gollanma]]

Init baş prosesdir we esasy ýoluň tötänleýin öldürilmezligini üpjün edýän bu ýol bilen öldürilip bilinmez. Init karar berýär we özüni öldürmäge rugsat berýär, bu ýerde öldürmek diňe ýapmak haýyşydyr.

Linuxhli işleýän Linux amallaryny sanaň

Processeshli amallary we degişlilikde berlen pidleri bilmek üçin aşakdaky ps buýrugyny işlediň.

# 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

“Pidof prosesi” hökmünde sintaksis ulanyp, ýokardaky çykyşy özleşdirmek hakda.

# pidof mysqld
1684

Aboveokardaky maksada ýetmegiň ýene bir usuly, aşakdaky sintaksisden ugur almakdyr.

# 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

[Şeýle hem halap bilersiňiz: Linux-da ýadyň ulanylyşy boýunça iň gowy 15 prosesi nädip tapmaly]

Linux-da bir prosesi nädip öldürmeli

Öňe gitmek we öldürmek buýrugyny ýerine ýetirmezden ozal bellemeli käbir möhüm nokatlar:

  • Ulanyjy ähli amallaryny öldürip biler.
  • Ulanyjy başga bir ulanyjynyň amalyny öldürip bilmez.
  • Ulanyjy ulgamyň ulanýan amallaryny öldürip bilmez.
  • Kök ulanyjy ulgam derejesindäki prosesi we islendik ulanyjynyň işini öldürip biler.

Şol bir funksiýany ýerine ýetirmegiň başga bir usuly, pgrep buýrugyny ýerine ýetirmekdir.

# pgrep mysql
3139

Aboveokardaky prosesi PID-i öldürmek üçin görkezilişi ýaly öldürmek buýrugyny ulanyň.

kill -9 3139

Aboveokardaky buýruk, pID=3139 bolan prosesi öldürer, bu ýerde PID amalyň san bahasydyr.

Şol bir funksiýany ýerine ýetirmegiň başga bir usuly ýaly täzeden ýazylyp bilner.

# kill -SIGTERM 3139

Edil şonuň ýaly, öldürmek -9 PID öldürmek -SIGKILL PID -e we tersine.

Linux-da prosessiň adyny ulanyp nädip öldürmeli

Öldürmezden we nädogry prosesiň adyny girizmezden ozal, prosesiň adyndan habarly bolmalysyňyz.

# pkill mysqld

Bir gezekde birden köp prosesi öldüriň.

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

Bir prosesiň gaty köp mysallary we birnäçe çaga prosesi bar bolsa, bizde öldürmek ýa-da pkill buýrugy bar. Bu ikisi, bu maşgalanyň ýeke-täk buýruklary bolup, amal belgisiniň ýerine argument adyny alýar.

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

Çaga amallary bilen birlikde ähli mysql mysallaryny öldürmek üçin buýrugy aşakdaky ýaly ulanyň.

# killall mysqld
OR
# pkill mysqld

Aşakdaky buýruklaryň haýsydyr birini ulanyp, işleýändigini ýa-da işlemeýändigini elmydama barlap bilersiňiz.

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

Bu häzirlikçe, meniň tarapymdan. Soonakynda ýene-de bir gyzykly we maglumat beriji mowzuk bilen gelerin. Şoňa çenli, “Tecmint” -e birikdiriň we sagdyn boluň. Teswirler bölüminde gymmatly pikirleriňizi bermegi ýatdan çykarmaň.