Kill: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Ksteinbe (talk | contribs)
Roparn (talk | contribs)
 
(42 intermediate revisions by 2 users not shown)
Line 1: Line 1:
TEGEMISEL
''Kill'' on käsk, mida kasutatakse protsesside ning ka tööde "tapmiseks" ehk sulgemiseks UNIX-i ning UNIX-i laadsetes operatsioonisüsteemides.
Kaspar Steinberg




== Sissejuhatus ==
== Sissejuhatus ==


''Kill'' on käsk, mida kasutatakse protsesside ning ka tööde tapmiseks UNIX-i ning UNIX-i laadsetes operatsioonisüsteemides. ''Kill'' käsklusel on hulk erinevaid parameetreid, mis võimaldavad tapmist läbi viia erinevaid mooduseid kasutades. Võimalik on tappa protess koheselt või anda talle aega oma tegevus lõpetada ning siis sulguda.  
''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.


== Käsud ==  
== 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 ''handler''it 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:
<pre>kill [-s signaali nimi] [-n signaali number] [-signaali nimi] %töönumber või pid</pre>
<pre>kill -l [exit_status]</pre>
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:
<pre>kill -15 1234</pre>
<pre>kill -term 1234</pre>
<pre>kill -s term 1234</pre>
<pre>kill 1234</pre>
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:
<pre>kill -9 1234</pre>
<pre>kill -kill 1234</pre>
<pre>kill -s kill 1234</pre>
Et näha kõiki signaale tuleb trükkida:
<pre>kill -l</pre>
<pre>kill -l</pre>


Selle käsu peale kuvatakse meile käsu ''Kill'' erinevad parameetrid:  
== Näited ==
<pre>1) SIGHUP      2) SIGINT      3) SIGQUIT      4) SIGILL
 
5) SIGTRAP      6) SIGABRT      7) SIGBUS      8) SIGFPE
=== Protsesside tapmine ===
  9) SIGKILL     10) SIGUSR1    11) SIGSEGV    12) SIGUSR2
 
13) SIGPIPE     14) SIGALRM    15) SIGTERM    17) SIGCHLD
Oletame, et meil on hangunud programm nimega ''Less''. Protsessile tapmiskäsu saatmiseks peab teadma protsessi ''PID'' numbrit.
18) SIGCONT     19) SIGSTOP    20) SIGTSTP    21) SIGTTIN
Kasutaja protsessitabel (mitte kogu süsteemi oma) saame käsuga:  
22) SIGTTOU     23) SIGURG      24) SIGXCPU    25) SIGXFSZ
<pre>#ps
26) SIGVTALRM  27) SIGPROF     28) SIGWINCH    29) SIGIO
  PID TTY          TIME CMD
30) SIGPWR      31) SIGSYS      33) SIGRTMIN    34) SIGRTMIN+1
  1550 tty1     00:00:00 login
35) SIGRTMIN+2 36) SIGRTMIN+3  37) SIGRTMIN+4  38) SIGRTMIN+5
1788 tty1     00:00:00 sudo
39) SIGRTMIN+6 40) SIGRTMIN+7  41) SIGRTMIN+8  42) SIGRTMIN+9
1789 tty1     00:00:00 bash
43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13
1869 tty1     00:00:00 man
47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-15 50) SIGRTMAX-14
1875 tty1     00:00:00 pager
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
  1880 tty1    00:00:00 man
55) SIGRTMAX-9 56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
  1881 tty1    00:00:00 less
59) SIGRTMAX-5 60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
  1890 tty1    00:00:00 col
63) SIGRTMAX-1  64) SIGRTMAX </pre>
  1905 tty1    00:00:00 ps
</pre>
 
Siit näeme, et protsessi ''Less'' ''pid'' on 1881.


== Näited ==
Protsessi 1881 tapmine:
<pre>kill 1881</pre>
 
=== Tööde tapmine ===
 
Töö tapmiseks tuleb teada töönumbrit, mida soovitakse tappa. Töö numbri leiab tööde nimekirjast, mida näeb käsuga:
<pre>#jobs
[1]  Stopped                man less | less
[2]-  Stopped                nano test.txt
[3]+  Stopped                top
</pre>
 
Selleks, et tappa töö tuleb lisada käsklusesse kill protsendimärk tapetava töö numbri ette:
<pre>kill %3</pre>


Viimase tahaplaanile surutud töö saab tappa käsuga:
<pre>kill %%</pre>


== Kasutatud kirjandus ==
== Kasutatud kirjandus ==
http://www.eenet.ee/EENet/assets/docs/abs/kill.html
 
http://en.wikibooks.org/wiki/Guide_to_Unix/Commands/Process_Management/Kill (inglise keelne)
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 ==
== Autor ==


Kaspar Steinberg A32
Robert Pärn A21
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]

Latest revision as of 21:58, 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 signaali nimi] [-n signaali number] [-signaali nimi] %töönumber või 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