Kill: Difference between revisions
No edit summary |
|||
Line 58: | Line 58: | ||
Oletame, et meil on hangunud programm nimega ''Less''. Protsessile tapmiskäsu saatmiseks peab teadma protsessi ''PID'' numbrit. | Oletame, et meil on hangunud programm nimega ''Less''. Protsessile tapmiskäsu saatmiseks peab teadma protsessi ''PID'' numbrit. | ||
Kasutaja protsessitabel (mitte kogu süsteemi oma) saame käsuga: | Kasutaja protsessitabel (mitte kogu süsteemi oma) saame käsuga: | ||
<pre>ps | <pre>#ps | ||
PID TTY TIME CMD | PID TTY TIME CMD | ||
1550 tty1 00:00:00 login | 1550 tty1 00:00:00 login | ||
Line 79: | Line 79: | ||
Töö tapmiseks tuleb teada töönumbrit, mida soovitakse tappa. Töö numbri leiab tööde nimekirjast, mida näeb käsuga: | Töö tapmiseks tuleb teada töönumbrit, mida soovitakse tappa. Töö numbri leiab tööde nimekirjast, mida näeb käsuga: | ||
<pre>jobs | <pre>#jobs | ||
[1] Stopped man less | less | [1] Stopped man less | less | ||
[2]- Stopped nano test.txt | [2]- Stopped nano test.txt |
Revision as of 21:53, 24 November 2011
Kill on käsk, mida kasutatakse protsesside ning ka tööde "tapmiseks" ehk sulgemiseks UNIX-i ning UNIX-i laadsetes operatsioonisüsteemides.
Sissejuhatus
Kill saadab spetsifitseeritud protsessile signaali, mis nõuab talt sulgemist. Tapmissignaale, mida saab protsessile saata, on erinevaid, mõni laseb protsessil oma tegevuse lõpetada ning salvestada, mõni lõpetab protsessi tegevuse koheselt. Protsesse, millele signaal saadetakse, identifitseeritakse kas protsessitabelis ps olevas pid (protsessi identifikaator) või kasutaja tööde tabelis (nähtav käsuga jobs) oleva numbri järgi. Protsesse saavad tappa kas neid omavad kasutajad või superkasutaja.
Kuidas see toimib
Teatud juhtudel on vaja kasutajal sulgeda mingi protsess manuaalselt. Tavapärane olukord, kus kill käsku on vaja kasutada on näiteks juhul, kui protsessor on ülekoormatud töödest, kuigi tänapäevaste arvutitega on see vähem probleemiks. On ka protsesse, mis ühel või teisel põhjusel ise ei sulgu, neid nimetatakse zombie protsessideks. Programmi sulgemine kill käsuga toimib nii: programmile saadetakse signaal (nagu mainitud, siis signaale on erinevaid), mis palub tal oma tegevused lõpetada. Programmile võib olla kodeeritud, sisse handler, mis oskab toimetada edasi selle konkreetse signaali puhul, selleks toiminguks võib olla informatsiooni salvestamine ning siis enda sulgemine. Osadele signaalidele ei saa handlerit olla, näiteks kill -9 ehk SIGTERM tapab protsessi viivituseta seega tasuks sellega ettevaatlik olla. Samas kui programmil puudub funktsioon, kuidas tegeleda mingi konkreetse signaaliga, kuulub ta kohesele sulgemisele.
Käsud
Süntaks:
kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
kill -l [exit_status]
Igale signaalile vastab mingi number, mida saab kill käsuga välja kutsuda. Signaalide ja nende funktsioonide kohta leiab rohkem infot signal manuaalist. Selleks, et kutsuda välja mingi signaal mingi protsessi suhtes, tuleb sisestada võtmeks signaali number või signaali nimi.
SIGTERM on käsk, mis lubab programmil enne oma toimetused lõpetada ning alles siis sulguda. Kuid programmi händler võib olla tehtud ka niimoodi, et käsku hoopis eiratakse. Selle käsu edastamiseks on neli erinevat võimalust.
Protsessi 1234 tapmine SIGTERM käsuga:
kill -15 1234
kill -term 1234
kill -s term 1234
kill 1234
Viimasest järeldub, et kui parameetreid mitte lisada rakendatakse Kill käsu puhul vaikimisi SIGTERM signaal.
SIGKILL on käsk, mis sunnib programmi koheselt sulguma. Selle käsu edastamiseks on kolm erinevat võimalust.
Protsessi 1234 tapmine SIGKILL käsuga:
kill -9 1234
kill -kill 1234
kill -s kill 1234
Et näha kõiki signaale tuleb trükkida:
kill -l
Näited
Protsesside tapmine
Oletame, et meil on hangunud programm nimega Less. Protsessile tapmiskäsu saatmiseks peab teadma protsessi PID numbrit. Kasutaja protsessitabel (mitte kogu süsteemi oma) saame käsuga:
#ps PID TTY TIME CMD 1550 tty1 00:00:00 login 1788 tty1 00:00:00 sudo 1789 tty1 00:00:00 bash 1869 tty1 00:00:00 man 1875 tty1 00:00:00 pager 1880 tty1 00:00:00 man 1881 tty1 00:00:00 less 1890 tty1 00:00:00 col 1905 tty1 00:00:00 ps
Siit näeme, et protsessi Less pid on 1881.
Protsessi 1881 tapmine:
kill 1881
Tööde tapmine
Töö tapmiseks tuleb teada töönumbrit, mida soovitakse tappa. Töö numbri leiab tööde nimekirjast, mida näeb käsuga:
#jobs [1] Stopped man less | less [2]- Stopped nano test.txt [3]+ Stopped top
Selleks, et tappa töö tuleb lisada käsklusesse kill protsendimärk tapetava töö numbri ette:
kill %3
Viimase tahaplaanile surutud töö saab tappa käsuga:
kill %%
Kasutatud kirjandus
http://linux.about.com/library/cmd/blcmdl_kill.htm
http://www.linuxjournal.com/article/1332
http://linux.about.com/od/commands/l/blcmdl1_kill.htm
Autor
Robert Pärn A21