Jifunze Misingi ya Jinsi Uelekezaji Upya wa Linux I/O (Ingizo/Pato) Hufanya Kazi


Moja ya mada muhimu na ya kuvutia chini ya usimamizi wa Linux ni uelekezaji upya wa I/O. Kipengele hiki cha safu ya amri hukuwezesha kuelekeza upya ingizo na/au matokeo ya amri kutoka na/au kwa faili, au kuunganisha amri nyingi pamoja kwa kutumia mabomba kuunda kile kinachojulikana kama \bomba la amri.

Amri zote ambazo tunaendesha kimsingi hutoa aina mbili za pato:

  1. matokeo ya amri - data ambayo programu imeundwa kutoa, na
  2. hali ya programu na ujumbe wa hitilafu ambao hufahamisha mtumiaji kuhusu maelezo ya utekelezaji wa programu.

Katika Linux na mifumo mingine kama ya Unix, kuna faili tatu chaguo-msingi zilizotajwa hapa chini ambazo pia zinatambuliwa na ganda kwa kutumia nambari za maelezo ya faili:

  1. stdin au 0 - imeunganishwa kwenye kibodi, programu nyingi husoma ingizo kutoka kwa faili hii.
  2. stdout au 1 - imeambatishwa kwenye skrini, na programu zote hutuma matokeo yake kwa faili hii na
  3. stderr au 2 - programu hutuma ujumbe wa hali/makosa kwa faili hii ambayo pia imeambatishwa kwenye skrini.

Kwa hivyo, uelekezaji upya wa I/O hukuruhusu kubadilisha chanzo cha ingizo cha amri na vile vile pato lake na ujumbe wa makosa hutumwa. Na hili linawezeshwa na waendeshaji wa uelekezaji kwingine wa \<” na \>”.

Jinsi ya Kuelekeza Pato la Kawaida kwa Faili kwenye Linux

Unaweza kuelekeza pato la kawaida kama ilivyo kwenye mfano hapa chini, hapa, tunataka kuhifadhi matokeo ya amri ya juu kwa ukaguzi wa baadaye:

$ top -bn 5 >top.log

Ambapo bendera:

  1. -b - huwezesha top kufanya kazi katika hali ya bechi, ili uweze kuelekeza towe lake kwa faili au amri nyingine.
  2. -n - hubainisha idadi ya marudio kabla ya amri kukomesha.

Unaweza kuona yaliyomo kwenye faili ya top.log kwa kutumia paka amri kama ifuatavyo:

$ cat top.log

Ili kuambatisha tokeo la amri, tumia \>>” opereta.

Kwa mfano kuambatanisha matokeo ya amri ya juu hapo juu katika faili ya top.log haswa ndani ya hati (au kwenye safu ya amri), weka laini hapa chini:

$ top -bn 5 >>top.log

Kumbuka: Kwa kutumia nambari ya maelezo ya faili, amri ya kuelekeza pato hapo juu ni sawa na:

$ top -bn 5 1>top.log

Jinsi ya Kuelekeza Kosa la Kawaida kwa Faili kwenye Linux

Ili kuelekeza upya kosa la kawaida la amri, unahitaji kubainisha kwa uwazi nambari ya maelezo ya faili, 2 ili shell ielewe kile unachojaribu kufanya.

Kwa mfano ls amri hapa chini itatoa hitilafu inapotekelezwa na mtumiaji wa kawaida wa mfumo bila upendeleo wa mizizi:

$ ls -l /root/

Unaweza kuelekeza kosa la kawaida kwa faili kama ilivyo hapo chini:

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

Ili kuongeza kosa la kawaida, tumia amri hapa chini:

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

Jinsi ya Kuelekeza Pato/ Hitilafu Kawaida kwa Faili Moja

Inawezekana pia kunasa matokeo yote ya amri (matokeo ya kawaida na makosa ya kawaida) kwenye faili moja. Hii inaweza kufanywa kwa njia mbili zinazowezekana kwa kutaja nambari za maelezo ya faili:

1. Ya kwanza ni njia ya zamani ambayo inafanya kazi kama ifuatavyo:

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

Amri iliyo hapo juu inamaanisha kuwa ganda litatuma kwanza matokeo ya ls amri kwa faili ls-error.log (kwa kutumia >ls-error.log), na kisha kuandika ujumbe wote wa makosa kwa maelezo ya faili. 2 (matokeo ya kawaida) ambayo yameelekezwa kwenye faili ls-error.log (kwa kutumia 2>&1). Kuashiria kuwa kosa la kawaida pia hutumwa kwa faili sawa na pato la kawaida.

2. Njia ya pili na ya moja kwa moja ni:

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

Unaweza pia kuongeza pato la kawaida na kosa la kawaida kwa faili moja kama hivyo:

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

Jinsi ya Kuelekeza Uingizaji Kawaida kwa Faili

Amri nyingi ikiwa sio zote hupata ingizo lao kutoka kwa ingizo la kawaida, na kwa chaguo-msingi ingizo la kawaida huambatishwa kwenye kibodi.

Ili kuelekeza upya ingizo la kawaida kutoka kwa faili tofauti na kibodi, tumia \<” opereta kama ilivyo hapo chini:

$ cat <domains.list 

Jinsi ya Kuelekeza Uingizaji/Pato la Kawaida kwa Faili

Unaweza kutekeleza uingizaji wa kawaida, uelekezaji wa pato la kawaida kwa wakati mmoja kwa kutumia amri ya kupanga kama ilivyo hapo chini:

$ sort <domains.list >sort.output

Jinsi ya Kutumia Uelekezaji wa I/O kwa kutumia Mabomba

Ili kuelekeza pato la amri moja kama pembejeo ya nyingine, unaweza kutumia bomba, hii ni njia yenye nguvu ya kujenga mistari muhimu ya amri kwa shughuli ngumu.

Kwa mfano, amri iliyo hapa chini itaorodhesha faili tano za juu zilizobadilishwa hivi karibuni.

$ ls -lt | head -n 5 

Hapa, chaguzi:

  1. -l - huwasha umbizo la muda mrefu la uorodheshaji
  2. -t - kupanga kwa muda wa kurekebisha na faili mpya zaidi zinaonyeshwa kwanza
  3. -n - hubainisha idadi ya vichwa vya kuonyesha

Amri Muhimu za Kujenga Mabomba

Hapa, tutapitia kwa ufupi amri mbili muhimu za bomba la ujenzi na ni:

xargs ambayo hutumiwa kujenga na kutekeleza mistari ya amri kutoka kwa pembejeo ya kawaida. Hapo chini kuna mfano wa bomba ambalo hutumia xargs, amri hii inatumika kunakili faili kwenye saraka nyingi kwenye Linux:

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

Na chaguzi:

  1. -n 1 - inaelekeza xargs kutumia angalau hoja moja kwa kila mstari wa amri na kutuma kwa amri ya cp
  2. cp - kunakili faili
  3. -v - huonyesha maendeleo ya amri ya kunakili.

Kwa chaguzi zaidi za utumiaji na habari, soma kupitia ukurasa wa mtu wa xargs:

$ man xargs 

Amri ya tee inasoma kutoka kwa pembejeo ya kawaida na huandika hadi pato la kawaida na faili. Tunaweza kuonyesha jinsi tee inavyofanya kazi kama ifuatavyo:

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

Kazi za usimamizi wa mfumo wa Linux.

Ili kujifunza zaidi kuhusu vichungi na mabomba ya Linux, soma makala hii Tafuta Anwani 10 za Juu za IP Kufikia Seva ya Apache, inaonyesha mfano muhimu wa kutumia vichungi na mabomba.

Katika makala haya, tulielezea misingi ya uelekezaji upya wa I/O katika Linux. Kumbuka kushiriki mawazo yako kupitia sehemu ya maoni hapa chini.