Stderr: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Labner (talk | contribs)
Labner (talk | contribs)
No edit summary
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''mustand'''<br>
'''stderr''' (standard error) on UNIX süsteemides standardveavoog. Vt. ka [[Stdin|stdin]] ja [[Stdout|stdout]]


== Standardvood ==
== Standardvood ==
[[File:stdstreams.png|thumb|right|Joonis 1. The standard streams for input, output, and error. Allikas: https://en.wikipedia.org/wiki/Standard_streams]]Linuxis ja teistes Unix-i laadsetes süsteemides on kasutusel standardvood. Iga protsess käivitatakse automaatselt koos kolme andmevooga: sisendvoog stdin ja väljundvoog [[Stdout|stdout]] (standard output) ja veavoog [[Stderr|stderr]] (standard error). Need vood kujutavad endast spetsiaalset tüüpi faili ja sisaldavad ''plain text'' andmeid.<ref>Standard Input Definition http://www.linfo.org/standard_input.html</ref><ref>Standard Output Definition http://www.linfo.org/standard_output.html</ref>
[[File:stdstreams.png|thumb|right|Joonis 1. The standard streams for input, output, and error. Allikas: https://en.wikipedia.org/wiki/Standard_streams]]Linuxis ja teistes Unix-i laadsetes süsteemides on kasutusel standardvood. Iga protsess käivitatakse automaatselt koos kolme andmevooga: sisendvoog stdin ja väljundvoog [[Stdout|stdout]] (standard output) ja veavoog [[Stderr|stderr]] (standard error). Need vood kujutavad endast spetsiaalset tüüpi faili ja sisaldavad ''plain text'' andmeid.<ref>Standard Input Definition http://www.linfo.org/standard_input.html</ref><ref>Standard Output Definition http://www.linfo.org/standard_output.html</ref><ref>Standard Error Definition http://www.linfo.org/standard_error.html</ref>
Igale avatud failile omistatakse ka arvuline deskriptor. stdin, stdout ja stderr arvulised failideskriptorid on vastavalt 0,1 ja 2.
Igale avatud failile omistatakse ka arvuline deskriptor. stdin, stdout ja stderr arvulised failideskriptorid on vastavalt 0,1 ja 2.
Tüüpiliselt on need vood seotud terminaliga (tty), kuid võivad ka viidata teistele failidele või seadmetele, kui protsess on vastavalt seadistatud.  
Tüüpiliselt on need vood seotud terminaliga (tty), kuid võivad ka viidata teistele failidele või seadmetele, kui protsess on vastavalt seadistatud.  
<ref>stdin(3) - Linux man page https://linux.die.net/man/3/stdin</ref>
<ref>stdin(3) - Linux man page https://linux.die.net/man/3/stdin</ref>
Tavaliselt läheb standardsisendvoogu klaviatuurilt sisestatav tekst ning väljundvoog ning veavoog kuvatakse ekraanile.
Tavaliselt läheb standardsisendvoogu klaviatuurilt sisestatav tekst ning väljundvoog ning veavoog kuvatakse ekraanile.
==stderr ümbersuunamine==
Nagu standardväljundvoogki, suunatakse ka veavoog vaikimisi ekraanile ning seda saab sernaselt teiste standardvoogudega ümber suunata.
Kuna standardväljundvoog ja veavoog on eraldi vood, saab neid erinevatesse kohtadesse suunata. Näiteks veavoo logifaili ja väljundvoo mõne teise programmi sisendisse.
Veavoo ümbersuunamiseks tuleb kasutada failideskriptorit 2 koos vahetult järgneva operaatoriga > st. <code>2></code>
Näiteks püüame kuvada mitteeksisteeriva faili nofile sisu:
<code>cat nofile</code>
Terminali kuvatakse viga: ''cat: nofile: No such file or directory. ''
Vea ümbersuunamiseks:
<code>cat nofile 2> errorlog</code>
Operaatori <code>></code> kasutamisel luuakse uus fail või kirjutatakse olemasolev üle. Selleks, et kirjutada olemasoleva faili lõppu tuleb kasutada ''append'' operaatorit <code>2>></code>.
Ühe käsuga võib ümbersuunata nii standardväljundi kui ka standardveavoo. Näiteks:
<code>cat nofile file1 file2 > allfiles 2>> errorlog</code>
Eksisteerivate failide sisu suunatakse faili ''allfiles'' ja veateated kirjutatakse faili ''errorlog'' lõppu.
Standardväljundi(1) ja veavoo(2) suunamiseks samasse kohta võib kasutada sellist käsku:
<code>command > /dev/null 2>&1</code>
st. veavoog suunatakse väljundvoogu ja väljundvoog suunatakse /dev/null faili - see on spetsiaalne fail, mille sisend automaatselt kustutatakse.
Sama ümbersuunamise saab teha ka otseteena:
<code>command &> /dev/null</code>


==Autor==
==Autor==
Line 12: Line 45:
DK23 <br>
DK23 <br>
jaanuar 2017
jaanuar 2017
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]

Latest revision as of 20:19, 27 January 2017

stderr (standard error) on UNIX süsteemides standardveavoog. Vt. ka stdin ja stdout

Standardvood

Joonis 1. The standard streams for input, output, and error. Allikas: https://en.wikipedia.org/wiki/Standard_streams

Linuxis ja teistes Unix-i laadsetes süsteemides on kasutusel standardvood. Iga protsess käivitatakse automaatselt koos kolme andmevooga: sisendvoog stdin ja väljundvoog stdout (standard output) ja veavoog stderr (standard error). Need vood kujutavad endast spetsiaalset tüüpi faili ja sisaldavad plain text andmeid.[1][2][3]

Igale avatud failile omistatakse ka arvuline deskriptor. stdin, stdout ja stderr arvulised failideskriptorid on vastavalt 0,1 ja 2. Tüüpiliselt on need vood seotud terminaliga (tty), kuid võivad ka viidata teistele failidele või seadmetele, kui protsess on vastavalt seadistatud. [4] Tavaliselt läheb standardsisendvoogu klaviatuurilt sisestatav tekst ning väljundvoog ning veavoog kuvatakse ekraanile.

stderr ümbersuunamine

Nagu standardväljundvoogki, suunatakse ka veavoog vaikimisi ekraanile ning seda saab sernaselt teiste standardvoogudega ümber suunata. Kuna standardväljundvoog ja veavoog on eraldi vood, saab neid erinevatesse kohtadesse suunata. Näiteks veavoo logifaili ja väljundvoo mõne teise programmi sisendisse.

Veavoo ümbersuunamiseks tuleb kasutada failideskriptorit 2 koos vahetult järgneva operaatoriga > st. 2> Näiteks püüame kuvada mitteeksisteeriva faili nofile sisu:

cat nofile

Terminali kuvatakse viga: cat: nofile: No such file or directory.

Vea ümbersuunamiseks:

cat nofile 2> errorlog

Operaatori > kasutamisel luuakse uus fail või kirjutatakse olemasolev üle. Selleks, et kirjutada olemasoleva faili lõppu tuleb kasutada append operaatorit 2>>.

Ühe käsuga võib ümbersuunata nii standardväljundi kui ka standardveavoo. Näiteks:

cat nofile file1 file2 > allfiles 2>> errorlog

Eksisteerivate failide sisu suunatakse faili allfiles ja veateated kirjutatakse faili errorlog lõppu.

Standardväljundi(1) ja veavoo(2) suunamiseks samasse kohta võib kasutada sellist käsku:

command > /dev/null 2>&1

st. veavoog suunatakse väljundvoogu ja väljundvoog suunatakse /dev/null faili - see on spetsiaalne fail, mille sisend automaatselt kustutatakse. Sama ümbersuunamise saab teha ka otseteena:

command &> /dev/null

Autor

Liina Abner
DK23
jaanuar 2017

  1. Standard Input Definition http://www.linfo.org/standard_input.html
  2. Standard Output Definition http://www.linfo.org/standard_output.html
  3. Standard Error Definition http://www.linfo.org/standard_error.html
  4. stdin(3) - Linux man page https://linux.die.net/man/3/stdin