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 – top
ps
pidof
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.
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
etuna on se, että tätä listaa voi helposti suodattaagrep
komennolla. Esimerkiksi termiin ”vnstat” liittyvän prosessin löytämiseksi voi käyttää:
ps aux | grep -i vnstat
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:
joten, vaikka saimme tuloksen, ei ole prosesseja, jotka meitä kiinnostaisivat.
Pidofin ja pgrep: n löytäminen
top
ja ps
grep
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ö.
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.
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 top
ps
lähtö.
prosessin tappaminen
prosessin tappamiseen voi käyttää erilaisia komentoja — kill
killall
pkill
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 pgrep
pkill
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 🙂