Prosessin lopettaminen tai ohjelman pysäyttäminen Linuxissa

Kun prosessi käyttäytyy huonosti, saatat joskus haluta lopettaa tai tappaa sen. Tässä postauksessa tarkastelemme muutamia tapoja lopettaa prosessi tai sovellus sekä komentoriviltä että graafisesta käyttöliittymästä käyttäen geditiä esimerkkisovelluksena.

Komentorivin/päättämismerkkien käyttäminen

Ctrl + C

Yksi ongelmaksi komentoriviltä kutsuttaessa komentoriviltä gedit (jos et käytä gedit &:aa) muodostuu se, että komentokehotteen käyttö ei vapauta komentokehotetta, jolloin komentotulkki-istunto on estynyt. Tällaisissa tapauksissa Ctrl+C (Control-näppäin yhdistettynä ’C’-näppäimeen) on kätevä. Se lopettaa gedit:n ja kaikki työ menetetään (ellei tiedostoa ole tallennettu). Ctrl+C lähettää SIGINT-signaalin gedit:lle. Tämä on pysäytyssignaali, jonka oletustoiminto on prosessin lopettaminen. Se käskee komentotulkkia pysäyttämään gedit ja palaamaan pääsilmukkaan, ja saat kehotteen takaisin.

$ gedit
^C

Ctrl + Z

Tätä kutsutaan keskeytysmerkiksi. Se lähettää SIGTSTP-signaalin prosessille. Tämä on myös pysäytyssignaali, mutta oletustoiminto ei ole tappaa vaan keskeyttää prosessi.

Se pysäyttää (tappaa/lopettaa) gedit ja palauttaa komentotulkin kehotteen.

$ gedit
^Z
+ Stopped gedit
$

Kun prosessi on keskeytetty (tässä tapauksessa gedit), ei gedit:ssä voi kirjoittaa tai tehdä mitään. Taustalla prosessista tulee työ. Tämä voidaan tarkistaa komennolla jobs.

$ jobs
+ Stopped gedit

jobs Voit hallita useita prosesseja yhdessä komentotulkki-istunnossa. Voit pysäyttää, jatkaa ja siirtää töitä taustalle tai etualalle tarpeen mukaan.

Jatketaan gedit taustalla ja vapautetaan kehote muiden komentojen suorittamiseen. Voit tehdä tämän käyttämällä komentoa bg, jota seuraa työn ID (huomaa yllä olevasta jobs:n tulosteesta. on työn ID).

$ bg 1
+ gedit &

Tämä vastaa gedit:n käynnistämistä komennolla &,:

 $ gedit &

Käyttämällä kill

kill voit hienosäätää signaaleja, sillä voit antaa signaalin prosessille antamalla joko signaalin nimen tai signaalin numeron ja sen jälkeen prosessin ID:n eli PID:n.

Pidän kill:ssa siitä, että se voi työskennellä myös työn ID:llä. Käynnistetään gedit taustalla käyttämällä gedit &. Olettaen, että minulla on työn tunnus gedit komennosta jobs, lähetetään SIGINT komennolle gedit:

 $ kill -s SIGINT %1

Huomaa, että työn tunnuksen eteen on laitettava %, tai kill pitää sitä PID:nä.

kill voi toimia määrittelemättä signaalia erikseen. Tällöin oletustoiminto on lähettää SIGTERM, joka lopettaa prosessin. Suorita kill -l luetellaksesi kaikki signaalien nimet ja käytä komentoa man kill lukeaksesi man-sivun.

Käyttämällä killall

Jos et halua määrittää työn ID:tä tai PID:tä, killall:n avulla voit määrittää prosessin nimen perusteella. Yksinkertaisin tapa lopettaa gedit käyttämällä killall on:

 $ killall gedit

Tämä tappaa kaikki prosessit, joiden nimi on gedit. Kuten kill, oletussignaali on SIGTERM. Siinä on mahdollisuus sivuuttaa tapaus käyttämällä -I:

$ gedit &
14852
$ killall -I GEDIT
+ Terminated gedit

Jos haluat lisätietoja killall:n tarjoamista erilaisista lipuista (kuten -u, jonka avulla voit tappaa käyttäjän omistamia prosesseja), tutustu man-sivuun (man killall)

Käyttämällä xkill:iä

Oletko ikinä törmännyt ongelmaan, jossa mediasoitin, kuten esimerkiksi VLC:n soitin, on harmaantunut tai roikkunut? Nyt voit etsiä PID:n ja tappaa sovelluksen jollakin edellä luetelluista komennoista tai käyttää xkill.

xkill avulla voit tappaa ikkunan hiiren avulla. Suorita yksinkertaisesti xkill terminaalissa, jolloin hiiren kursorin pitäisi muuttua x-kirjaimeksi tai pieneksi kallokuvakkeeksi. Napsauta x siinä ikkunassa, jonka haluat sulkea. Ole kuitenkin varovainen xkill:n käytössä – koska sen man-sivu selittää, että se voi olla vaarallinen. Sinua on varoitettu!

Lisätietoja saat kunkin komennon man-sivulta. Voit myös tutustua komentoihin kuten pkill ja pgrep.

Vastaa

Sähköpostiosoitettasi ei julkaista.