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
.