Boolen maailmassa

linux tappaa kansikuva

käyttöjärjestelmässä on monia ohjelmia, jotka voivat olla joko käyttäjän tai käyttöjärjestelmän itsensä ajamia (kuten järjestelmäpalvelut). Tällaisia ohjelmia, jotka ovat käynnissä järjestelmässä, kutsutaan ”prosesseiksi”. Yleensä, prosessi päättyy itsestään, kun he ovat tehneet tehtävänsä, tai kun pyydät heitä lopettamaan painamalla pikanäppäintä tai klikkaamalla ”Sulje” – painiketta.

joskus prosessi voi kuitenkin jumittaa tai kuluttaa paljon suoritinta tai RAM-muistia. Tässä tilanteessa, haluat manuaalisesti ”tappaa” prosessi. Tässä artikkelissa, tarkastelemme erilaisia työkaluja, joilla voit tappaa prosesseja Linux-järjestelmässä.

tappavan prosessin Paikallistaminen

jotta prosessi voidaan tappaa, tulee ensin paikantaa prosessin yksityiskohdat. Voit tehdä tämän kolmen komennon kautta – toppspidof ja pgrep. Tilanteesta riippuen voit käyttää yhtä näistä komennoista tähän tarkoitukseen.

kuten näemme myöhemmin tässä artikkelissa, voit tappaa prosessin sen nimellä tai sen prosessitunnuksella (PID). PID on luku, joka yksilöi prosessin. Killing by the process ID on hyödyllinen, kun haluat tappaa vain tietyn prosessin. Toisaalta, tappaminen prosessin nimi on hyödyllinen, kun haluat tappaa kaikki käynnissä olevat esiintymät tietyn ohjelman.

prosessin Paikallistaminen ylimmällä komennolla

tarkastelemme ensin top komentoa. Käynnistä ylintä komentoa kirjoittamalla:

top

saat interaktiivisen käyttöliittymän, kuten alla on esitetty. Voit selata tätä luetteloa löytääksesi sen prosessin nimen tai PID: n, jonka haluat tappaa.

ylintä komentoa, joka näyttää luettelon prosesseista.

selataksesi tätä listaa voit käyttää ylös / alas-näppäimiä. Lisäksi ylimmässä komennossa on myös tapoja suodattaa prosesseja suorittimen käyttö -, käyttäjä-ja prosessinimien mukaan, joista voit lukea tästä oppaasta.

vasemmanpuoleisimmassa sarakkeessa on prosessin PID ja oikealla puolella ohjelman nimi. Esimerkkinä yllä olevassa kuvakaappauksessa on vnstatd prosessi käynnissä prosessitunnuksella 263.

prosessin paikantaminen ps-ja grep-komennoilla

toinen tapa saada prosessiluettelo on ajamalla:

ps aux

yllä olevassa komennossa on käytetty lippuja aux joilla on seuraavat merkitykset:

  • a: Näytä prosessit kaikille käyttäjille
  • u: Näytä prosessia käyttävä käyttäjä
  • x: Näytä kaikki prosessit. (Ilman tätä ps ei Näytä GUI-ympäristössä käynnissä olevia prosesseja.)

komennon ulostulo on samankaltainen kuin top. PID on saatavilla toisessa sarakkeessa vasemmalta, ja prosessin nimi on saatavilla oikeanpuoleisimmassa sarakkeessa.

"ps aux" - komennon tulokset."ps aux" command.

psetuna on se, että tätä listaa voi helposti suodattaagrepkomennolla. Esimerkiksi termiin ”vnstat” liittyvän prosessin löytämiseksi voi käyttää:

ps aux | grep -i vnstat

suodatusprosesseja ps: llä ja grep: llä, jolloin tulos on positiivinen.

täällä saatiin kaksi tulosta — vnstatd prosessi, sekä grep prosessi. Koska haimme kaikkia ”vnstat” – termin ilmentymiä ja ajoimme myös grep ”vnstat” – argumenttina, saimme grep myös tuloksissa.

näin, vaikka ”vnstatiin” liittyviä prosesseja ei olisikaan käynnissä, saisimme yhden merkinnän, jossa näkyy grep prosessi:

suodatusprosessit ps: llä ja grep: llä.

joten, vaikka saimme tuloksen, ei ole prosesseja, jotka meitä kiinnostaisivat.

Pidofin ja pgrep: n löytäminen

top ja psgrep yhdistelmä mahdollistaa prosessien etsimisen. Toisaalta, jos tiedät prosessin tarkan nimen, voit käyttää pidof sen PID: n löytämiseen.

pidof käyttäminen on melko suoraviivaista. Saadaksesi prosessin pid: t, jonka tarkka nimi on ”nginx”, käytä:

pidof nginx

Jos on prosesseja, joiden tarkka nimi on ”nginx”, saat listan PID: istä, kuten alla on esitetty. Jos ei ole, et saa mitään kuin lähtö.

pidof-komento

Jos et tiedä koko nimeä, voit käyttää pgrep sijasta pidof. Esimerkkinä voit etsiä kaikkia prosesseja, jotka sisältävät ”ngin”jossain niiden nimessä, ajamalla:

pgrep ngin

Tämä vastaa prosesseja, joilla on tarkka nimi” nginx”, samoin kuin mikä tahansa muu prosessi, joka vastaa samoja kriteerejä. Järjestelmäämme, huomaa, että saamme kaikki PIDs, joka kuului ”nginx” edellä kuvakaappaus.

pgrep: n komento.

pidof japkill komennot antavat huomattavasti vähemmän tietoa. Kuten näemme seuraavassa osassa, on joitakin olosuhteita, joissa et voi tappaa prosessia. top ja ps sisältävät lisätietoja, joiden avulla voi päätellä, voiko prosessin todella tappaa.

mitä prosesseja voi tappaa?

nyt kun olemme paikantaneet prosessin, on aika tappaa se. Kuitenkin, ennen kuin opimme tekemään niin, on olemassa muutamia asioita sinun täytyy tietää.

Jos olet normaali käyttäjä, voit tappaa omat prosessisi, mutta et niitä, jotka kuuluvat muille käyttäjille. Sekä top että ps osoittavat käyttäjän, jonka alaisuudessa prosessi on käynnissä. Jos top, toisessa sarakkeessa on käyttäjätunnus. Kun ps aux, ensimmäisessä sarakkeessa on käyttäjätunnus.

juurenkäyttäjä voi kuitenkin tappaa kaikki prosessit. Voit joko lisätä sudo ennen kuin mikään komento suorittaa sen pääkäyttäjänä, tai hankkia pääkäyttäjän kirjoittamalla su ja suorittaa komennon.

Linuxissa, kun prosessi tapetaan, prosessille toimitetaan ”päättävä signaali”. Vaikka on olemassa monia erilaisia signaaleja, me enimmäkseen käsitellä ”SIGTERM” ja ”SIGKILL” signaaleja. Niiden numeerinen arvo on 15 ja 9. Oletusarvoisesti kaikki prosessin tappokomennot käyttävät ”SIGTERMIÄ”, jonka avulla ohjelma voi suorittaa jonkin koodin ennen poistumistaan, jolloin se voi lopettaa”sulavasti”. Jos haluat lopettaa prosessin väkisin, voit käyttää ”SIGKILL” sijaan.

Linux-ydin ylläpitää joitakin prosessin tilaan liittyviä tietoja. Kun prosessi päättyy, ytimen on säilytettävä tiedot, jotta vanhempi prosessi voi selvittää, jos lapsi prosessi pystyi suorittamaan tehtävänsä ja onko se lopetettu itsestään, tai se tapettiin. Kunnes vanhempi on tehnyt niin, nämä” zombie ” prosessit näkyvät luettelossa prosesseja. Tällaista prosessia ei voi tappaa, koska se on vain merkintä kaikkien prosessien luettelossa, eikä siihen liity varsinaista prosessia.

kun prosessi suorittaa input / output-operaatioita (kuten lukemista levykkeiltä tai kirjoittamista levyille), sen sanotaan olevan ”keskeytymättömässä unessa”. Et voi tappaa prosessia, kun se on tässä tilassa.

voit kertoa, onko prosessi ”zombi”(Z) vai ”keskeytymätön Uni”(D) – tilassa katsomalla topps lähtö.

prosessin tappaminen

prosessin tappamiseen voi käyttää erilaisia komentoja — killkillallpkill ja top. Aloitamme yksinkertaisimmasta: killall komento.

tappaminen killall-komennolla

killall – komento on yksi helpoimmista tavoista tappaa prosessi. Jos tiedät prosessin tarkan nimen ja tiedät, että se ei ole käynnissä toisena käyttäjänä eikä se ole Z-tai D-tilassa, voit käyttää tätä komentoa suoraan; prosessia ei tarvitse paikantaa manuaalisesti, kuten edellä on kuvattu.

oletusarvoisesti esimerkiksi ”firefox” – nimisen prosessin tappamiseen, suorita:

killall firefox

prosessin väkisin tappaminen sigkillillä, suorita:

killall -9 firefox

voit käyttää myös -SIGKILL sijasta -9.

Jos haluat tappaa prosessit vuorovaikutteisesti, voit käyttää -i näin:

killall -i firefox

Jos haluat tappaa toisena käyttäjänä käynnissä olevan prosessin, voit käyttää sudo:

sudo killall firefox

voit myös tappaa tietyn ajan käynnissä olleen prosessin -o ja -y lipuilla. Jos siis haluat tappaa prosessin, joka on ollut käynnissä yli 30 minuuttia, käytä:

killall -o 30m <process-name>

Jos haluat tappaa prosessin, joka on ollut käynnissä alle 30 minuuttia, käytä:

killall -y 30m <process-name>

vastaavasti, käytä seuraavia lyhenteitä vastaavista aikayksiköistä:

s seconds
m minutes
h hours
d days
w weeks
M months
y years

Killing processes with the pkill command

Sometimes, you only know part of a program’s name. Aivan kuten pgreppkill mahdollistaa prosessien tappamisen osittaisten osumien perusteella. Esimerkiksi jos haluat tappaa kaikki prosessit, jotka sisältävät nimen apache nimessä, suorita:

pkill apache

Jos haluat käyttää SIGKILLIÄ sigtermin sijaan, käytä:

uudelleen, voit käyttää myös -SIGKILL sijasta -9.

Tappamisprosessit kill-komennolla

kill-komennon käyttäminen on suoraviivaista. Kun olet saanut selville tapettavan prosessin PID: n, voit lopettaa sen komennolla kill. Jos haluat esimerkiksi tappaa prosessin, jonka PID on 1234, käytä seuraavaa komentoa:

kill 1234

kuten aiemmin mainittiin, oletuksena on käyttää sigtermiä. Jos haluat käyttää SIGKILLIÄ, käytä -9 tai -SIGKILL kuten olemme aiemmin nähneet:

kill -9 1234

tappamisprosessit ylimmällä komennolla

on erittäin helppo tappaa prosessit käyttämällä top komento. Etsi ensin prosessi, jonka haluat tappaa ja huomaa PID. Paina sitten k yläosan ollessa käynnissä (tämä on kirjainkokoherkkä). Se kehottaa sinua syöttämään PID prosessin, jonka haluat tappaa.

kun olet syöttänyt PID: n, paina enter. Nyt se kysyy, mitä signaalia haluat käyttää tappaa prosessin. Jos haluat käyttää SIGTERMIÄ(15), paina enter-näppäintä, koska se on oletussignaali. Jos haluat käyttää SIGKILLIÄ(9), Kirjoita 9 ja paina enter.

Jos jätät prosessin ID: n tyhjäksi ja painat enteriä suoraan, se lopettaa luettelon ylimmän prosessin. Voit vierittää nuolinäppäimillä ja muuttaa prosessia, jonka haluat tappaa tällä tavalla.

johtopäätös

tässä viestissä näimme Linuxin eri tapoja tappaa prosesseja. Näiden komentojen oppiminen on välttämätöntä järjestelmän asianmukaisen hallinnan ja hallinnan kannalta. Jos haluat tutkia enemmän näitä komentoja, vilkaise niiden man-sivuja.

If you liked this post, please share it 🙂

Vastaa

Sähköpostiosoitettasi ei julkaista.