Opi Linux I/O (Input/Output) -ohjauksen perusteet


Yksi tärkeimmistä ja mielenkiintoisimmista aiheista Linux-hallinnossa on I/O-uudelleenohjaus. Tämän komentorivin ominaisuuden avulla voit ohjata komentojen syötteen ja/tai lähdön tiedostoista ja/tai tiedostoihin tai liittää useita komentoja yhteen putkien avulla muodostamaan ns. Komentoputkijärjestelmän.

Kaikki suorittamamme komennot tuottavat pohjimmiltaan kahdenlaisia tuloksia:

  1. komentotulos - tiedot, jotka ohjelma on suunniteltu tuottamaan, ja
  2. ohjelman tila- ja virheilmoitukset, jotka ilmoittavat käyttäjälle ohjelman suorituksen yksityiskohdista.

Linuxissa ja muissa Unix-tyyppisissä järjestelmissä on kolme alla nimettyä oletustiedostoa, jotka myös kuori tunnistaa tiedostokuvaajien numeroilla:

  1. stdin tai 0 - se on kytketty näppäimistöön, useimmat ohjelmat lukevat tämän tiedoston syötteen.
  2. stdout tai 1 - se on liitetty ruutuun, ja kaikki ohjelmat lähettävät tulokset tähän tiedostoon ja
  3. stderr tai 2 - ohjelmat lähettävät tila-/virheilmoituksia tähän tiedostoon, joka on myös liitetty näyttöön.

Siksi I/O-uudelleenohjauksen avulla voit muuttaa komennon tulolähdettä sekä sitä, mihin sen lähtö- ja virheilmoitukset lähetetään. Ja tämän mahdollistavat “<” ja “>” uudelleenohjausoperaattorit.

Kuinka ohjata vakiolähtö tiedostoon Linuxissa

Voit ohjata vakiolähdön kuten alla olevassa esimerkissä, tässä haluamme tallentaa ylimmän komennon lähdön myöhempää tarkastusta varten:

$ top -bn 5 >top.log

Missä liput:

  1. -b - sallii topin suorittamisen eräajotilassa, jotta voit ohjata sen lähdön tiedostoon tai toiseen komentoon.
  2. -n - määrittää iteraatioiden määrän ennen komennon päättymistä.

Voit tarkastella top.log -tiedoston sisältöä cat-komennolla seuraavasti:

$ cat top.log

Voit lisätä komennon lähdön “>>” -operaattorilla.

Esimerkiksi, jos haluat liittää yläkomennon lähdön yläosaan top.log-tiedostoon erityisesti komentosarjassa (tai komentorivillä), kirjoita alla oleva rivi:

$ top -bn 5 >>top.log

Huomaa: Tiedostokuvaajan numeroa käyttämällä yllä oleva uudelleenohjauskomento on sama kuin:

$ top -bn 5 1>top.log

Kuinka ohjata tavallinen virhe tiedostoon Linuxissa

Jos haluat ohjata komennon vakiovirheen, sinun on määritettävä kuoren tiedostokuvaajan numero 2 , jotta ymmärrät mitä yrität tehdä.

Esimerkiksi alla oleva komento ls tuottaa virheen, kun normaali järjestelmän käyttäjä suorittaa sen ilman pääkäyttöoikeuksia:

$ ls -l /root/

Voit ohjata tavallisen virheen tiedostoon seuraavasti:

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

Liitä vakiovirhe käyttämällä seuraavaa komentoa:

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

Kuinka ohjata vakiolähtö/virhe yhteen tiedostoon

On myös mahdollista siepata kaikki komennon lähdöt (sekä vakiolähtö että vakiovirhe) yhteen tiedostoon. Tämä voidaan tehdä kahdella mahdollisella tavalla määrittämällä tiedostokuvaajien numerot:

1. Ensimmäinen on suhteellisen vanha menetelmä, joka toimii seuraavasti:

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

Yllä oleva komento tarkoittaa, että kuori lähettää ensin ls-komennon lähdön tiedostoon ls-error.log (käyttäen > ls-error.log ) ja kirjoittaa sitten kaikki virheilmoitukset tiedostokuvaajaan 2 (vakiolähtö), joka on ohjattu tiedostoon ls-error.log (käyttäen 2> & 1 ). Tarkoituksena on, että vakiovirhe lähetetään myös samaan tiedostoon kuin vakiolähtö.

2. Toinen ja suora menetelmä on:

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

Voit myös liittää vakiotulosteen ja vakiovirheen yhteen tiedostoon näin:

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

Kuinka ohjata vakiosyöttö tiedostoon

Suurin osa, elleivät kaikki komennot saa syötteensä vakiotulosta, ja oletusarvoisesti vakiotulo liitetään näppäimistöön.

Voit ohjata vakiosyötteen muusta tiedostosta kuin näppäimistöstä käyttämällä “<” -operaattoria seuraavasti:

$ cat <domains.list 

Kuinka ohjata vakiotulo/-lähtö tiedostoon

Voit suorittaa vakiosyötön, vakiolähdön uudelleenohjauksen samanaikaisesti käyttämällä alla olevaa lajittelukomentoa:

$ sort <domains.list >sort.output

Kuinka käyttää I/O-uudelleenohjausta putkilla

Voit ohjata yhden komennon lähdön toisen syötteenä käyttämällä putkia, tämä on tehokas tapa rakentaa hyödyllisiä komentorivejä monimutkaisiin operaatioihin.

Esimerkiksi alla olevassa komennossa luetellaan viisi viimeisintä muokattua tiedostoa.

$ ls -lt | head -n 5 

Tässä vaihtoehdot:

  1. -l - mahdollistaa pitkän luettelomuodon
  2. -t - lajittelu muokkausajan mukaan uusimmat tiedostot näytetään ensin
  3. -n - määrittää näytettävien otsikkorivien määrän

Tärkeitä komentoja putkilinjojen rakentamiseen

Tässä tarkastelemme lyhyesti kahta tärkeää komentoa putkilinjojen rakentamiseksi ja ne ovat:

xargs, jota käytetään komentorivien rakentamiseen ja suorittamiseen vakiotulosta. Alla on esimerkki putkistosta, joka käyttää xargsia. Tätä komentoa käytetään tiedoston kopioimiseen useisiin hakemistoihin Linuxissa:

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

Ja vaihtoehdot:

  1. -n 1 - kehottaa xargsia käyttämään enintään yhtä argumenttia komentoriviä kohti ja lähettämään sen cp-komennolle
  2. cp - kopioi tiedoston
  3. -v - näyttää kopiointikomennon edistymisen.

Lisää käyttömahdollisuuksia ja tietoja lukemalla xargs man -sivun

$ man xargs 

Tee-komento lukee vakiotulosta ja kirjoittaa vakiotulosteeseen ja tiedostoihin. Voimme osoittaa tien toiminnan seuraavasti:

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

Linux-järjestelmänhallintatehtävät.

Lisätietoja Linux-suodattimista ja -putkista on tässä artikkelissa. Etsi 10 parasta IP-osoitetta, jotka käyttävät Apache-palvelinta, ja siinä on hyödyllinen esimerkki suodattimien ja putkien käytöstä.

Tässä artikkelissa selitimme I/O-uudelleenohjauksen perusteet Linuxissa. Muista jakaa ajatuksesi alla olevan palauteosan kautta.