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 -heProsessin 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!