Kuinka tappaa prosessi nimellä Linuxissa

Pakota lopettamaan huonosti käyttäytyvät prosessit käyttämällä näitä Linux-komentoja

"Prosessin" merkityksen selittäminen yksinkertaisimmilla sanoilla on, että se on minkä tahansa järjestelmässäsi olevan sovelluksen tai ohjelman käynnissä oleva esiintymä. Saatat käyttää useita sovelluksia samanaikaisesti, kuten selaamista, kuunnella musiikkia päätteelläsi jne. Näihin sovelluksiin liittyy monia käyttäjän suorittamia taustaprosesseja.

Jokainen järjestelmässäsi toimiva sovellus tai ohjelma luo useita yksittäiseen sovellukseesi liittyviä prosesseja. Joskus tämä voi olla ongelma, ja näistä prosesseista eroon pääseminen on ainoa vaihtoehto.

Prosessin "tappaminen" on yksi hyödyllinen vaihtoehto, jonka Linux tarjoaa sinulle pysäyttää käynnissä olevat prosessit, oli se sitten etualan prosessi tai taustaprosessi. Tässä artikkelissa tarkastelemme komennot, kuten tappaa, pkill ja tapa kaikki pakottaaksesi lopettamaan minkä tahansa prosessin järjestelmässä.

Miksi tappaa prosessi?

Prosessin tappamisen käsitteen ymmärtäminen on tärkeää ennen kuin siirryt eteenpäin tässä opetusohjelmassa. Tappaminen saattaa tuntua erittäin julmalta tavalta ilmaista käsite, mutta se tarkoittaa kuvaannollisesti prosessin väkivaltaista keskeyttämistä.

Miksi keskeyttää tai lopettaa käynnissä oleva prosessi? Kun useita prosesseja on käynnissä taustalla, kaikki tai muutamat niistä voivat toimia virheellisesti ja aiheuttaa järjestelmän virheellisen toiminnan. Tämä viivästyttää käynnissä olevia tehtäviäsi, koska toimintahäiriöprosessi voi jäädyttää järjestelmäsi joksikin aikaa.

Joskus kaikkien väärin toimivien prosessien lopettaminen näyttää olevan ainoa vaihtoehto palauttaa järjestelmäsi normaali. Linux antaa sinun tappaa prosessin käyttämällä pid tai prosessin nimi.

Käyttämällä pgrep komento

Suurin osa Linux-käyttäjistä tuntee sen grep komento. The pgrep komentoa voidaan käyttää vastaavilla riveillä grep.

pgrep -komento, kun sitä käytetään, näyttää pid käynnissä olevasta prosessista komennon mukaisesti. Tämä komento on erittäin hyödyllinen käytettäessä pkill komento.

Yleinen syntaksi:

pgrep [valinnat] [malli]

Tärkeitä vaihtoehtoja, jotka ovat käytettävissä pgrep komento

VaihtoehtoKuvaus
-uluettelon tietyn käyttäjän omistama prosessitunnus
-claskea täsmäytysprosessien määrä
-Minäluettele vain prosessien nimet
-alistaa prosessin nimen koko polku

Osoittakaamme käyttö pgrep komento esimerkin avulla.

pgrep -u gaurav gnome

Täällä haluamme nähdä pids prosessignomesta, jonka omistaa käyttäjä "gaurav". Vaihtoehto -u voit luetella pids tietyn käyttäjän omistamista prosesseista. Tässä tapauksessa käyttäjä gaurav.

Lähtö:

gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$

Kun jatkamme tätä opetusohjelmaa, pgrep komento auttaa meitä vahvistamaan, onko prosessi lopetettu vai onko se edelleen käynnissä.

Siirrytään nyt asiaan pkill komento ja sen suorittaminen.

Käyttämällä pkill komento

Voit käyttää pkill komento Linuxissa tappaaksesi prosessin käyttämällä prosessin nimeä. Vaikka et tiedä pid jostain prosessista, silloinkin voit tappaa kyseisen prosessin käyttämällä pkill komento.

Prosessit voidaan määrittää koko nimellä tai osittaisella nimellä käytettäessä pkill komento. Vaikka syötät prosessin osittaisen nimen, pkill -komento vastaa kaikki käynnissä olevat prosessit komentoon syöttämäsi vastaavan nimen kanssa.

Syntaksi:

pkill [valinnat][prosessin_nimi_kuvio] 

Esimerkki:

Näytämme tällä hetkellä käynnissä olevat prosessit käyttämällä alkuun komento. Voit myös käyttää ps -komento listatakseen prosessit.

alkuun
alkuun - 14:24:02 ylös 3:12, 1 käyttäjä, kuormituksen keskiarvo: 0.29, 0.48, 0.58 Tehtävät: yhteensä 221, 1 käynnissä, 172 nukkumassa, 0 pysähtynyt, 1 zombi % CPU(s): 5.6 us, 1.0 sy , 0.0 ni, 92.9 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3928240 yhteensä, 610456 vapaata, 2233152 käytetty, 1084632 buff/cache KiB Swap: 3 7 4083 vapaata: 0,8,4083 1187268 tuloksetta Mem PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + komento 4077 gaurav 20 0 3312128 673480 118360 S 19,6 17,1 15: 13,23 Web Content 3712 gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9: 28,39 MainThread 2010 gaurav 20 0 +4.084.232 111096 45024 S 1,7 2,8 3: 14,85 gnome-kuoren 1197 root 20 0 1039612 33704 22988 S 1,0 0,9 3: 04,42 Xorgin 1426 CouchDB 20 0 3772396 16908 2520 S 0,7 0,4 1: 50,83 beam.smp 3288 gaurav 20 0 722480 25048 18272 S 0,7 0,6 0: 06,84 gnome-terminaali- 3915 gaurav 20 0 2804900 231524 111228 S 0,7 5,9 0: 54,42 Web-sisällön 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01,21 Web-sisällön 4417 gaurav 20 0 2964208 234396 119160 S 0,7 6,0 0 :59.90 Verkkosisältö 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Verkkosisältö 16007 gaurav 20 0 41944 3780 3116 R .207 top . 

Käyttämällä alkuun -komento näyttää useita prosesseja terminaalissasi. Yritetään näyttää prosessi tietyllä nimellä. Tulemme käyttämään grep -komento näyttääksesi prosessin, jonka nimi vastaa merkkijonoa "mongo".

alkuun | grep -i mongo

merkintä: Tässä olen käyttänyt -i-vaihtoehtoa tehdäkseni haun kirjainkoosta eroon.

Tämän komennon tulos näyttää prosessit, jotka vastaavat nimeä "mongo"

 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,22 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,25 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,36 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,38 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,40 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,43 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,45 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,48 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,52 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1:03,54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongod

Nyt käytämme pkill komento tappaa prosessi nimeltä "mongo".

pkill mongo

Tämä komento tappaa nyt prosessin mongon. Voimme vahvistaa, onko prosessi pakotettu lopettamaan käyttämällä pgrep -komento, joka näyttää pid käynnissä olevasta prosessista käyttäjän määrittämien kriteerien mukaisesti.

gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$

Tämä komento ei palauta arvoa. Tämä vahvistaa, että prosessi "mongo" tapetaan nyt käyttämällä pkill komento.

Usein käytetyt vaihtoehdot pkill komento

Kun käytät pkill -komentoa varten tarvitsemme mainitut vaihtoehdot oikeaan ja vaivattomaan käyttöön pkill komento.

VaihtoehdotKuvaus
-fvastaa täydellisiä argumentteja, mukaan lukien välilyönnit, lainausmerkit ja erikoismerkit
-uilmoittaa pkill-prosessille, että se vastaa määritetyn käyttäjän suorittamaa prosessia
-1lataa prosessin uudelleen
-9tappaa prosessin
-15keskeyttää sulavasti prosessin

Katsotaanpa vielä yksi esimerkki pkill komento käyttämällä -f vaihtoehto.

Terminaalissa on tällä hetkellä käynnissä kaksi komentoa alla olevan kuvan mukaisesti.

ping bbc.com ping youtube.com

Molemmat prosessit käynnistää ping komento. Oletetaan nyt, että haluamme lopettaa vain yhden prosessin "ping youtube.com", niin meidän on käytettävä -f vaihtoehto kanssa pkill -komento, joka tappaa prosessin tietyllä nimellä, mukaan lukien välilyönnit ja lainausmerkit prosessin nimestä.

Komento:

gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$ 

Tulos:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) tavua tietoa. 64 tavua kohteesta bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30.9 ms 64 tavua tiedostosta bom12s08-in-f14.1e100.25. = 117 aika = 121 ms 64 tavua kohteesta bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 206 ttl = 117 aika = 86,5 ms 64 tavua kohteesta bom12s08-in-e1.6.67248-in-e1.6.6.6 ): icmp_seq=207 ttl=117 aika=105 ms Päätetty gaurav@ubuntu:~$ 

Täällä "ping youtube.com"prosessi on nyt lopetettu ja "ping bbc.com” on edelleen käynnissä terminaalissa.

Siinä tapauksessa, jos olisimme käyttäneet pkill ping komento, se olisi tappanut molemmat ping prosesseja, mikä ei ole toivottavaa.

kanssa käytettyjä signaaleja pkill komento

pkill pakottaa prosessin lopettamaan lähettämällä tietyn signaalin kyseiselle prosessille. On kolme mahdollista signaalia, jotka pkill komento voi lähettää prosessille käyttäjän antaman komennon mukaan.

Seuraavassa on luettelo käytettävissä olevista signaaleista.

SignaaliErittely
1(HUP)lataa määritetyn prosessin uudelleen
9 (TAPPAA)tappaa määritellyn prosessin
15 (TERMI)pysäyttää tai keskeyttää määritellyn prosessin varovasti

Tässä opetusohjelmassa luotamme vahvasti TAPPAA signaali. Käydään läpi joitain esimerkkejä ymmärtääksemme sitä paremmin.

Käyttämällä pgrep komento saada pid vastaa nimeä apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -Kill apache

TAI voit käyttää komentoa myös numeroiden kanssa (esim. 1, 9, 15)

pkill -9 apache

Molemmat yllä näkyvät komennot tappavat prosessiapachen. Vahvistetaan kanssa pgrep komento uudelleen.

gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$

Kuten pgrep komento ei palauta tulostetta, mikä osoittaa, että prosessiapache on tapettu.

Johtopäätös

Tässä opetusohjelmassa opimme mm pkill komento ja kuinka sitä käytetään lopettamaan prosessi käyttämällä prosessin nimeä suoraan. Opimme myös mm pgrep -komento, jota käytetään tietyn käyttäjän suorittaman prosessin prosessitunnuksen hakemiseen. The pgrep komennon avulla voimme ristiintarkistaa, onko prosessi tapettu.