Kuinka tappaa prosessi Linuxissa

How Kill Process Linux



Jokaisessa Linux -käyttöjärjestelmässä on kill -komento. Tämän työkalun ainoa tarkoitus on lopettaa kohdeprosessi. Se on tehokas työkalu, joka tekee Linuxista varsin monipuolisen, erityisesti palvelin- ja yrityskentillä, joilla suuri muutos/päivitys voi tulla voimaan käynnistämättä koko konetta uudelleen. Tässä artikkelissa esitän kuinka tappaa prosessi käyttämällä tappaa , pkill ja tapa kaikki .

Prosessin tappaminen

Prosessin tappamiseksi käytämme kourallista työkaluja: tappaa , pkill ja tapa kaikki . Kaikki toimivat periaatteessa samalla tavalla.







Nämä työkalut eivät lopeta prosessia itse. Sen sijaan he lähettävät määrätyn signaalin kohdeprosessille tai prosessiryhmille. Jos et määrittänyt tiettyä signaalia, SIGTERM lähetetään oletussignaalina. On kuitenkin olemassa useita tuettuja signaaleja, esimerkiksi SIGKILL, SIGHUP jne.



Tässä on peruskomentojen perusrakenne tappaa , pkill ja tapa kaikki .



$tappaa <signaali_tai_vaihtoehdot> <PID(s)>
$ pkill<signaali_tai_vaihtoehdot> <prosessin_nimi>
$tapa kaikki <vaihtoehto> <prosessin_nimi>

Aina kun mahdollista, on suositeltavaa käyttää tappaa .





Tappaa , pkill ja tapa kaikki sijainnit

Tapa on oletuskomento prosessin lopettamiseen.



$tappaa --auta

Se suoritetaan hakemistosta /usr /bin.

$joka tappaa

Etuna on, että se mahdollistaa myös pääsyn pkilliin, joka on toinen tapa, joka tappaa ja joka mahdollistaa prosessin lopettamisen heidän nimensä perusteella.

$pkill--auta

$jokapkill

Jotkin sovellukset suorittavat useita suoritettavia toimintoja. Jos haluat lopettaa useita samannimisiä prosesseja, käytä killall -työkalua.

$tapa kaikki --auta

$joka tapa kaikki

Listaa kaikki käynnissä olevat prosessit

Ensimmäinen tehtävä on tunnistaa PID (prosessin tunnistenumero) ja/tai lopetettavan prosessin nimi. Tässä esimerkissä käytän Firefoxia kohdistusprosessina lopettamiseen. Suorita seuraava komento luetteloidaksesi kaikki järjestelmän käynnissä olevat prosessit.

$ps -TO

Suurimman osan tehtävistä meidän on tiedettävä kohdeprosessin PID. Kuitenkin tietyissä tilanteissa prosessin nimen käyttäminen on sopivampaa.

Jos tiedät kohdeprosessin tarkan nimen, voit saada PID -tunnuksen suoraan pidof .

$pidof <prosessin_nimi>

Toinen mielenkiintoinen työkalu kohdeprosessin tietojen saamiseksi on pgrep. Se on erityisesti suunniteltu tätä tarkoitusta varten.

$pgrep<vaihtoehto> <prosessin_nimi>

Tapa signaalit

Katsotaanpa nyt signaaleja, joita tappotyökalut tukevat. Se on valtava lista. Kaikki eivät tietenkään ole välttämättömiä kaikissa tilanteissa. Itse asiassa useimmat tilanteet vaativat vain kourallisen signaaleja.

Katsotaanpa ensin luetteloa, joka tappaa tuet.

$tappaa -he

On kaksi tapaa määrittää, minkä signaalin haluat lähettää. Voit käyttää joko koko signaalin nimeä tai sitä vastaavaa arvoa.

$tappaa-<signaali> <PID>

Tai,

$tappaa-<signaali_arvo> <PID>

Suosituimmat signaalit ovat SIGHUP (1), SIGKILL (9) ja SIGTERM (15). Yleensä SIGTERM on oletus ja turvallisin tapa lopettaa kohdeprosessi.

Pkillin tapauksessa tuettu signaali on sama kuin tappaa. Kuitenkin killallin tapauksessa tuettujen signaalien lukumäärä ja signaalien nimet ovat erilaisia.

$tapa kaikki -he

Prosessin tappaminen

Prosessin tappamiseksi tarvitsemme kyseisen kohdeprosessin PID -tunnuksen. Olettaen, että sinulla on PID, suorita seuraava komento tappaaksesi sen.

$tappaa <vaihtoehto> <PID>

Täällä kill lähettää oletussignaalin SIGTERM PID: iin. Jos haluat lopettaa useita prosesseja, mainitse kaikki PID: t välilyönnillä erotettuna.

$tappaa <vaihtoehto> <PID_1> <PID_2>

Määritä, minkä signaalin haluat lähettää kohteelle.

Haluatko lopettaa prosessin käyttämällä vain sen nimeä? Käytä pkilliä.

$pkill<vaihtoehto> <prosessin_nimi>

Joissakin tapauksissa tietyssä sovelluksessa voi olla käynnissä liian monta prosessia. Kaikkien näiden PID-tunnusten kirjoittaminen on aikaa vievää ja väsyttävää. Tällaisissa tilanteissa käytämme killall -työkalua. Se on melko samanlainen kuin tappaa, mutta se toimii prosessin nimen kanssa.

$tapa kaikki <vaihtoehto> <prosessin_nimi>

Esimerkiksi Firefoxia käytettäessä se käynnistää kourallisen prosesseja. Jos haluat tappaa ne kaikki kerralla, suorita tämä komento.

$tapa kaikkifirefox

Haluatko lopettaa kaikki tietyn käyttäjän alaiset prosessit? Killall pystyy tekemään työnsä, ei hätää. Ole varovainen, kun käytät tätä, koska se voi rikkoa järjestelmän ja aiheuttaa muita ongelmia. Se ei toimi, jos yrität lopettaa prosessit, jotka ovat käynnissä toisen käyttäjän alla, jolla on korkeammat oikeudet.

$tapa kaikki -u <käyttäjä>

Lupa konflikti

Linux -käyttäjähierarkian luontaiset ominaisuudet pätevät myös silloin, kun aiot lopettaa sovelluksen. Käyttäjä ei voi lopettaa prosesseja, jotka ovat käynnissä korkeammilla oikeuksilla, vain prosesseja, joilla on sama/pienempi käyttöoikeus. Lisäksi käyttäjä ei voi manipuloida eri käyttäjän alaisia ​​prosesseja.

Tarkastellaan esimerkiksi kyllä ​​-komentoa. Jos sitä kutsutaan nykyiseksi käyttäjäksi, se voidaan helposti lopettaa käyttämällä tappaa.

$tappaa Joo

No entä jos Joo juoksi alle juuri ? Kutsu tappaa nykyisenä käyttäjänä ei toimi.

Samoin, jos prosessi oli käynnissä toisen käyttäjän alaisuudessa, et voi lopettaa sitä toiselta käyttäjätililtä.

Lopulliset ajatukset

Tässä artikkelissa esiteltiin vain näiden komentojen perusteet ja yleinen käyttö. Nämä tappotyökalut kykenevät enemmän. Jos haluat saada syvällistä tietoa minkä tahansa työkalun kyvyistä, suosittelen tutustumaan man-sivulle.

$mies tappaa

$miespkill

Nauttia!