Õppige põhitõdesid, kuidas Linuxi I/O (sisend/väljund) ümbersuunamine töötab


Linuxi administreerimise üks olulisemaid ja huvitavamaid teemasid on I/O ümbersuunamine. See käsurea funktsioon võimaldab teil suunata käskude sisendi ja/või väljundi failidest ja/või failidesse või ühendada torude abil mitu käsku, et moodustada nn käsurida.

Kõik käsklused, mida käitame, annavad põhimõtteliselt kahte tüüpi väljundit:

  1. käsu tulemus - andmed, mille tootmiseks programm on loodud, ja
  2. programmi oleku ja tõrketeated, mis teavitavad kasutajat programmi täitmise üksikasjadest.

Linuxis ja teistes Unixi-laadsetes süsteemides on kolm allpool nimetatud vaikefaili, mille ka koor tuvastab faili kirjeldajate numbritega:

  1. stdin või 0 - see on ühendatud klaviatuuriga, enamik programme loeb selle faili sisendit.
  2. stdout või 1 - see on lisatud ekraanile ja kõik programmid saadavad oma tulemused sellesse faili ja
  3. stderr või 2 - programmid saadavad oleku/veateateid sellesse faili, mis on samuti ekraanile lisatud.

Seetõttu võimaldab sisend/väljund ümbersuunamine muuta nii käsu sisendallikat kui ka selle väljundi- ja veateateid. Ja seda võimaldavad ümbersuunamisoperaatorid \"<" ja \">" .

Kuidas suunata standardväljund faili Linuxis

Saate standardväljundi ümber suunata nagu allpool toodud näites, siin soovime salvestada ülemise käsu väljundi hilisemaks kontrollimiseks:

$ top -bn 5 >top.log

Kus lipud:

  1. -b - võimaldab topil töötada pakettrežiimis, et saaksite selle väljundi faili või mõnda muusse käsusse suunata.
  2. -n - määrab korduste arvu enne käsu lõppemist.

Faili top.log sisu saate vaadata käsu cat abil järgmiselt:

$ cat top.log

Käsu väljundi lisamiseks kasutage operaatorit \">>" .

Näiteks ülemise ülemise käsu väljundi lisamiseks top.log-faili, eriti skripti (või käsureale), sisestage järgmine rida:

$ top -bn 5 >>top.log

Märkus. Kasutades failikirjelduse numbrit, on ülaltoodud väljundi ümbersuunamise käsk sama mis:

$ top -bn 5 1>top.log

Kuidas standardviga Linuxis faili suunata

Käsu standardvea ümbersuunamiseks peate shellile selgesõnaliselt määrama faili kirjeldaja numbri 2 , et mõista, mida proovite teha.

Näiteks allpool olev käsk ls tekitab vea, kui selle täidab tavaline süsteemi kasutaja ilma juurõigusteta:

$ ls -l /root/

Võite standardvea faili suunata järgmiselt:

$ ls -l /root/ 2>ls-error.log
$ cat ls-error.log 

Standardvea lisamiseks kasutage allolevat käsku:

$ ls -l /root/ 2>>ls-error.log

Kuidas suunata standardväljund/-viga ühte faili

Samuti on võimalik kogu käsu väljund (nii standardväljund kui ka standardviga) hõivata ühte faili. Seda saab teha kahel võimalikul viisil, määrates faili kirjeldajate numbrid:

1. Esimene on suhteliselt vana meetod, mis toimib järgmiselt:

$ ls -l /root/ >ls-error.log 2>&1

Ülaltoodud käsk tähendab, et kest saadab esmalt käsu ls väljundi faili ls-error.log (kasutades > ls-error.log ) ja kirjutab seejärel kõik tõrketeated failikirjeldisse 2 (standardväljund), mis on suunatud faili ls-error.log (kasutades 2> & 1 ). See tähendab, et standardviga saadetakse ka standardsesse väljundisse samasse faili.

2. Teine ja otsene meetod on:

$ ls -l /root/ &>ls-error.log

Samuti saate ühele failile lisada standardväljundi ja standardvea, näiteks:

$ ls -l /root/ &>>ls-error.log

Kuidas suunata standardsisend faili

Enamik, kui mitte kõik käsud, saavad sisendi standardsisendist ja vaikimisi on standardne sisend klaviatuuril ühendatud.

Standardse sisendi ümbersuunamiseks failist, mis pole klaviatuur, kasutage operaatorit \"<" järgmiselt:

$ cat <domains.list 

Kuidas suunata standardsisend/väljund faili

Saate samaaegselt teha standardsisendi, väljundi standardse ümbersuunamise, kasutades allpool asuvat sortimis käsku:

$ sort <domains.list >sort.output

Kuidas kasutada I/O ümbersuunamist torude abil

Ühe käsu väljundi ümbersuunamiseks teise sisendina võite kasutada torusid. See on võimas vahend keeruliste toimingute jaoks kasulike käsuridade loomiseks.

Näiteks loetleb allolev käsk viis viimast muudetud faili.

$ ls -lt | head -n 5 

Siin on valikud:

  1. -l - lubab pika loendi vormingu
  2. -t - kõigepealt kuvatakse uusimate failidega sortimine muutmisaja järgi
  3. -n - määrab kuvatavate päiseridade arvu

Torustike ehitamise olulised käsud

Siin vaatame lühidalt läbi kaks olulist käsku torujuhtmete ehitamiseks ja need on:

xargs, mida kasutatakse käsuridade loomiseks ja käivitamiseks standardsisendist. Allpool on näide torustikust, mis kasutab xargsi. Seda käsku kasutatakse faili kopeerimiseks Linuxi mitmesse kataloogi:

$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

Ja võimalused:

  1. -n 1 - käsib xargsil kasutada käsureal maksimaalselt ühte argumenti ja saata käsule cp
  2. cp - kopeerib faili
  3. -v - kuvab käsu kopeerimise edenemise.

Kasutamisvõimaluste ja lisateabe saamiseks lugege läbi xargsi käsulehe:

$ man xargs 

Tee-käsk loeb standardsisendist ja kirjutab standardsesse väljundisse ja failidesse. Me saame näidata, kuidas tee töötab, järgmiselt:

$ echo "Testing how tee command works" | tee file1 

Linuxi süsteemi administreerimise ülesanded.

Linuxi filtrite ja torude kohta lisateabe saamiseks lugege seda artiklit. Leidke 10 parimat IP-aadressi, mis pääsevad juurde Apache Serverile. Selles on kasulik näide filtrite ja torude kasutamisest.

Selles artiklis selgitasime Linuxis I/O ümbersuunamise põhialuseid. Ärge unustage oma mõtteid jagada allpool oleva tagasiside jaotise kaudu.