Ero sivun ”Signaali” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
p (pari wikilinkkiä)
(selkeytystä ym)
Rivi 1: Rivi 1:
Linuxissa ohjelmat voivat lähettää toisilleen erityyppisiä viestejä signaaleilla. Signaalien avulla saadaan ohjelmat tekemään tiettyjä asioita, ja useimmiten niitä käytetään ohjelmien lopettamiseen.
Ohjelmat eli [[prosessi]]t voivat Linuxissa saada toisensa tekemään tiettyjä asioita lähettämällä toisilleen signaaleita. Niitä käytetään yleisimmin ohjelmien sulkemiseen eli tappamiseen (engl. ''kill''). Erilaisista virhe- ja erikoistilanteista ilmoitetaan myös usein signaaleita lähettämällä.


Signaaleja voi lähettää komentoriviltä näppäinyhdistelmillä (INT, QUIT, STP) tai [[kill]]-komennolla ja ohjelmista kill-järjestelmäkutsulla. Monia signaaleja lähetetään viestittämään erilaisista virhe- ja erikoistilanteista [[ydin|ytimen]], [[X]]:n tms. toimesta.
Eri signaaleja voi lähettää [[komentorivi]]ltä joko näppäinyhdistelmillä (signaalit INT, QUIT, STP) tai [[kill]]-komennolla. Ohjelmista käsin signaalien lähettäminen tapahtuu kill-järjestelmäkutsulla.


Useimpien signaalien oletusvaikutus on ohjelman lopettaminen, mutta ohjelma voi määritellä oman tapansa suhtautua eri signaaleihin. Esimerkiksi [[komentorivi]]ohjelmalle lähetetään näppäinyhdistelmällä ctrl+c signaali 2 (''INT''), joka tarkoittaa sitä, että ohjelma saa tallentaa tilansa ja sen jälkeen sen pitäisi sulkeutua. Tämä signaali esimerkiksi lähetetään kaikille ohjelmille järjestelmän sammuessa.
Useimpien signaalien oletusvaikutus on ohjelman lopettaminen, mutta ohjelma voi määritellä oman tapansa suhtautua eri signaaleihin. Esimerkiksi näppäinyhdistelmällä <tt>Ctrl+C</tt> lähetetään signaali 2 (INT), joka tarkoittaa, että ohjelma saa tallentaa tilansa ja sen jälkeen sen pitäisi sulkeutua. Useat ohjelmat eivät kuitenkaan tämän signaalin saatuaan sulkeudu, vaan esimerkiksi vain kehottavat käyttäjää sulkemaan ohjelman sen oman käyttöliittymän kautta.


Eräs yleinen signaali on signaali numero 1 (''HUP''). Se lähetetään ohjelmalle tilanteessa jossa yhteys, jonka kautta ohjelmaa käytettiin, katkeaa. Tämä tapahtuu esimerkiksi silloin kun [[pääte-emulaattori|päätteessä]] ajetaan komentoriviohjelmaa ja pääte suljetaan tai jos ohjelmaa ajetaan etäkoneella [[SSH]]-yhteyden yli. Monet ohjelmat reagoivat ''HUP''-signaaliin samalla tavalla kuin ''TERM''-signaaliin.
Eräs yleinen signaali on signaali numero 1 (HUP). Se lähetetään ohjelmalle tilanteessa jossa yhteys, jonka kautta ohjelmaa käytettiin, katkeaa. Tämä tapahtuu esimerkiksi silloin kun [[pääte-emulaattori]]ssa ajetaan komentoriviohjelmaa ja pääte-emulaattori suljetaan tai jos ohjelmaa ajetaan etäkoneella [[SSH]]-yhteyden yli. Monet ohjelmat reagoivat HUP-signaaliin samalla tavalla kuin signaaliin TERM.


Signaalit numerot 9 (''KILL'') ja 19 (''STOP'') ovat ainoat signaalit, joiden vaikutusta ohjelma ei voi muuttaa, vaan nämä signaalit lopettavat (KILL) tai pysäyttävät (STOP) kyseisen ohjelman suorituksen välittömästi.
Signaalit numero 9 (KILL) ja 19 (STOP) ovat ainoat signaalit, joiden vaikutusta ohjelma ei voi muuttaa, vaan nämä signaalit lopettavat (KILL) tai pysäyttävät (STOP) kyseisen ohjelman suorituksen välittömästi.


KILL-signaali annetaan yleensä koneen sulkemisen yhteydessä, kun ensin on varoitettu ohjelmia TERM-signaalilla. Sillä voi myös sulkea rikkinäisen ohjelman, joka ei tottele muita signaaleja, mutta koska ohjelmalle ei jää mahdollisuutta sulkea jälkensä tätä
KILL-signaali annetaan yleensä koneen sulkemisen yhteydessä, kun ensin on varoitettu ohjelmia TERM-signaalilla. Sillä voi myös sulkea rikkinäisen ohjelman, joka ei tottele muita signaaleja, mutta koska ohjelmalle ei tällöin jää mahdollisuutta sulkea jälkensä, on sitä yleensä syytä käyttää vasta viimeisenä vaihtoehtona ohjelman sulkemiseen.


Joitakin signaaleja:
==Yleisimpiä signaaleita==
* '''HUP''' ("hangup"): yhteys käyttäjään katkennut. Kun Unix-koneita käytettiin puhelinverkon välityksellä tämä signaali annettiin yhteyden katketessa. Nykyään tyypillinen syy on [[pääte-emulaattori|pääteikkunan]] sulkeminen. Palvelinohjelmistoja voi usein pyytää lukemaan asetustietonsa uudestaan tällä signaalilla.
* '''HUP''' ("hangup"): yhteys käyttäjään katkennut. Kun Unix-koneita käytettiin puhelinverkon välityksellä, annettiin tämä signaali yhteyden katketessa. Nykyään tyypillinen syy on [[pääte-emulaattori|pääteikkunan]] sulkeminen. Palvelinohjelmistoja voi usein pyytää lukemaan asetustietonsa uudestaan tällä signaalilla.
* '''INT''' ("interrupt"): käyttäjä on painanut CTRL-C. Ohjelma sulkeutuu.
* '''INT''' ("interrupt"): käyttäjä on painanut Ctrl+C. Ohjelma sulkeutuu (useimmissa tapauksissa).
* '''QUIT''': käyttäjä on painanut näppäinyhdistelmää QUIT (katso [[stty]]). Ohjelma sulkeutuu, mutta jättää [[core]]-tiedoston ohjelman toiminnan tutkimiseksi.
* '''QUIT''': käyttäjä on painanut näppäinyhdistelmää Ctrl+D (katso [[stty]]). Ohjelma sulkeutuu, mutta jättää [[core]]-tiedoston ohjelman toiminnan tutkimiseksi.
* '''KILL''': ydin lopettaa ohjelman ilman varoitusta
* '''KILL''': ydin lopettaa ohjelman ilman varoitusta
* '''SIGUSR1''': ohjelmakohtaisesti määritelty
* '''USR1''': ohjelmakohtaisesti määritelty
* '''SEGV''': väärä muistinosoitus eli vika ohjelmassa, muistipiireissä tms.
* '''SEGV''': väärä muistinosoitus eli vika ohjelmassa, muistipiireissä tms.
* '''TERM''': ohjelma pyydetään sulkeutumaan, esimerkiksi [[shutdown]]-käskyn takia
* '''TERM''': ohjelma pyydetään sulkeutumaan, esimerkiksi [[shutdown]]-käskyn takia
* '''STOP''': ydin pysäyttää ohjelman
* '''STOP''': ydin pysäyttää ohjelman
* '''CONT''': ohjelman annetaan jatkaa
* '''CONT''': ohjelman annetaan jatkaa
Signaalien nimet esitetään usein muodossa SIG + signaalinnimi, esimerkiksi SIGHUP.


== Katso myös ==
== Katso myös ==
*[[Dbus]]
*[[D-Bus]]
*[[Kill]]
*[[Kill]]
*[[Killall]]
*[[Killall]]
*[[Pkill]]
*[[Prosessi]]
*[[Prosessi]]


[[Luokka:Järjestelmä]]
[[Luokka:Järjestelmä]]
[[Luokka:Käsitteet]]
[[Luokka:Käsitteet]]

Versio 13. lokakuuta 2009 kello 23.58

Ohjelmat eli prosessit voivat Linuxissa saada toisensa tekemään tiettyjä asioita lähettämällä toisilleen signaaleita. Niitä käytetään yleisimmin ohjelmien sulkemiseen eli tappamiseen (engl. kill). Erilaisista virhe- ja erikoistilanteista ilmoitetaan myös usein signaaleita lähettämällä.

Eri signaaleja voi lähettää komentoriviltä joko näppäinyhdistelmillä (signaalit INT, QUIT, STP) tai kill-komennolla. Ohjelmista käsin signaalien lähettäminen tapahtuu kill-järjestelmäkutsulla.

Useimpien signaalien oletusvaikutus on ohjelman lopettaminen, mutta ohjelma voi määritellä oman tapansa suhtautua eri signaaleihin. Esimerkiksi näppäinyhdistelmällä Ctrl+C lähetetään signaali 2 (INT), joka tarkoittaa, että ohjelma saa tallentaa tilansa ja sen jälkeen sen pitäisi sulkeutua. Useat ohjelmat eivät kuitenkaan tämän signaalin saatuaan sulkeudu, vaan esimerkiksi vain kehottavat käyttäjää sulkemaan ohjelman sen oman käyttöliittymän kautta.

Eräs yleinen signaali on signaali numero 1 (HUP). Se lähetetään ohjelmalle tilanteessa jossa yhteys, jonka kautta ohjelmaa käytettiin, katkeaa. Tämä tapahtuu esimerkiksi silloin kun pääte-emulaattorissa ajetaan komentoriviohjelmaa ja pääte-emulaattori suljetaan tai jos ohjelmaa ajetaan etäkoneella SSH-yhteyden yli. Monet ohjelmat reagoivat HUP-signaaliin samalla tavalla kuin signaaliin TERM.

Signaalit numero 9 (KILL) ja 19 (STOP) ovat ainoat signaalit, joiden vaikutusta ohjelma ei voi muuttaa, vaan nämä signaalit lopettavat (KILL) tai pysäyttävät (STOP) kyseisen ohjelman suorituksen välittömästi.

KILL-signaali annetaan yleensä koneen sulkemisen yhteydessä, kun ensin on varoitettu ohjelmia TERM-signaalilla. Sillä voi myös sulkea rikkinäisen ohjelman, joka ei tottele muita signaaleja, mutta koska ohjelmalle ei tällöin jää mahdollisuutta sulkea jälkensä, on sitä yleensä syytä käyttää vasta viimeisenä vaihtoehtona ohjelman sulkemiseen.

Yleisimpiä signaaleita

  • HUP ("hangup"): yhteys käyttäjään katkennut. Kun Unix-koneita käytettiin puhelinverkon välityksellä, annettiin tämä signaali yhteyden katketessa. Nykyään tyypillinen syy on pääteikkunan sulkeminen. Palvelinohjelmistoja voi usein pyytää lukemaan asetustietonsa uudestaan tällä signaalilla.
  • INT ("interrupt"): käyttäjä on painanut Ctrl+C. Ohjelma sulkeutuu (useimmissa tapauksissa).
  • QUIT: käyttäjä on painanut näppäinyhdistelmää Ctrl+D (katso stty). Ohjelma sulkeutuu, mutta jättää core-tiedoston ohjelman toiminnan tutkimiseksi.
  • KILL: ydin lopettaa ohjelman ilman varoitusta
  • USR1: ohjelmakohtaisesti määritelty
  • SEGV: väärä muistinosoitus eli vika ohjelmassa, muistipiireissä tms.
  • TERM: ohjelma pyydetään sulkeutumaan, esimerkiksi shutdown-käskyn takia
  • STOP: ydin pysäyttää ohjelman
  • CONT: ohjelman annetaan jatkaa

Signaalien nimet esitetään usein muodossa SIG + signaalinnimi, esimerkiksi SIGHUP.

Katso myös