Kọ Awọn ipilẹ ti Bii Linux I/O (Input/Output) Redirection Ṣiṣẹ


Ọkan ninu awọn akọle ti o ṣe pataki julọ ati ti o nifẹ si labẹ iṣakoso Linux ni itọsọna I/O. Ẹya yii ti laini aṣẹ n jẹ ki o ṣe atunṣe ifilọlẹ ati/tabi iṣawakiri ti awọn aṣẹ lati ati/tabi si awọn faili, tabi darapọ mọ awọn aṣẹ lọpọlọpọ ni lilo awọn paipu lati ṣe agbekalẹ ohun ti a mọ ni opo gigun ti aṣẹ\".

Gbogbo awọn ofin ti a nṣiṣẹ ni ipilẹṣẹ gbe iru iru iṣelọpọ meji:

  1. abajade aṣẹ - data ti a ṣe apẹrẹ eto lati ṣe, ati
  2. ipo eto ati awọn ifiranṣẹ aṣiṣe ti o fun olumulo kan ti awọn alaye ipaniyan eto naa.

Ni Lainos ati awọn eto bii Unix miiran, awọn faili aiyipada mẹta wa ti a darukọ ni isalẹ eyiti a tun ṣe idanimọ nipasẹ ikarahun nipa lilo awọn nọmba alaye faili:

  1. stdin tabi 0 - o ti sopọ mọ bọtini itẹwe, ọpọlọpọ awọn eto ka kika lati inu faili yii.
  2. stdout tabi 1 - o ti sopọ mọ iboju naa, ati pe gbogbo awọn eto firanṣẹ awọn abajade wọn si faili yii ati
  3. stderr tabi 2 - awọn eto firanṣẹ ipo/awọn ifiranṣẹ aṣiṣe si faili yii eyiti o tun so mọ iboju naa.

Nitorinaa, redirection I/O gba ọ laaye lati paarọ orisun titẹsi ti aṣẹ kan bii ibiti o ti gbejade ati awọn ifiranṣẹ aṣiṣe si. Ati pe eyi ṣee ṣe nipasẹ \"<” ati \">” awọn oniṣẹ ṣiṣatunṣe.

Bii O ṣe le Ṣe àtúnjúwe Iwọnjade Ipele si Faili ni Lainos

O le ṣe atunṣe iṣẹjade deede bi ninu apẹẹrẹ ni isalẹ, nibi, a fẹ lati tọju iṣujade ti aṣẹ oke fun ayewo nigbamii:

$ top -bn 5 >top.log

Ibi ti awọn asia:

  1. -b - jẹ ki oke lati ṣiṣẹ ni ipo ipele, nitorina o le ṣe atunṣe iṣẹjade rẹ si faili tabi aṣẹ miiran.
  2. -n - ṣalaye nọmba ti awọn aṣetunṣe ṣaaju aṣẹ naa yoo pari.

O le wo awọn akoonu ti top.log faili nipa lilo pipaṣẹ ologbo bi atẹle:

$ cat top.log

Lati ṣafikun iṣẹjade aṣẹ kan, lo oniṣẹ ẹrọ \">>" .

Fun apeere lati ṣafikun iṣẹjade aṣẹ oke ni oke ni faili top.log paapaa laarin iwe afọwọkọ kan (tabi lori laini aṣẹ), tẹ laini isalẹ:

$ top -bn 5 >>top.log

Akiyesi: Lilo nọmba alaye alaye faili, aṣẹ itunjade o wu loke jẹ kanna bii:

$ top -bn 5 1>top.log

Bii O ṣe le Ṣe àtúnjúwe Aṣiṣe Standard lati Faili ni Lainos

Lati ṣe atunṣe aṣiṣe boṣewa ti aṣẹ kan, o nilo lati ṣalaye ni pato nọmba alaye apejuwe faili, 2 fun ikarahun lati ni oye ohun ti o n gbiyanju lati ṣe.

Fun apẹẹrẹ aṣẹ ls ti o wa ni isalẹ yoo ṣe aṣiṣe nigbati o ba ṣiṣẹ nipasẹ olumulo eto deede laisi awọn anfaani gbongbo:

$ ls -l /root/

O le ṣe atunṣe aṣiṣe boṣewa si faili bi isalẹ:

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

Lati le fi kun aṣiṣe aṣiṣe, lo aṣẹ ni isalẹ:

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

Bii O ṣe le Ṣe àtúnjúwe Iwọnjade Ipele/Aṣiṣe Si Faili Kan Kan

O tun ṣee ṣe lati gba gbogbo iṣẹjade ti aṣẹ kan (iṣuuṣe boṣewa ati aṣiṣe boṣewa) sinu faili kan. Eyi le ṣee ṣe ni awọn ọna meji ti o ṣee ṣe nipa sisọ awọn nọmba alaye alaye faili naa:

1. Akọkọ jẹ ọna atijọ ti o jo eyiti o ṣiṣẹ bi atẹle:

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

Ofin ti o wa loke tumọ si pe ikarahun yoo kọkọ fi iṣẹjade ti aṣẹ ls silẹ si faili ls-error.log (ni lilo > ls-error.log ), ati lẹhinna kọ gbogbo awọn ifiranṣẹ aṣiṣe si alaye faili naa 2 (iṣẹjade deede) eyiti o ti darí si faili ls-error.log (lilo 2> & 1 ). Ni itumọ pe aṣiṣe boṣewa tun ranṣẹ si faili kanna bi iṣiṣẹ boṣewa.

2. Ọna keji ati taara ni:

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

O tun le ṣe afikun iṣẹjade boṣewa ati aṣiṣe aṣiṣe si faili kan bii bẹ:

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

Bii O ṣe le Ṣe Atunṣe Input Ipele si Faili

Pupọ julọ ti kii ba ṣe gbogbo awọn aṣẹ gba ifunni wọn lati titẹwọle boṣewa, ati nipa aiyipada igbewọle boṣewa ti wa ni asopọ si keyboard.

Lati ṣe atunṣe ifilọlẹ boṣewa lati faili miiran yatọ si bọtini itẹwe, lo oniṣẹ \"<” bi isalẹ:

$ cat <domains.list 

Bii O ṣe le Ṣe Atunṣe Input Standard/Ijade si Faili

O le ṣe agbewọle titẹ sii, ṣiṣatunṣe o wu boṣewa ni akoko kanna nipa lilo aṣẹ iru bi isalẹ:

$ sort <domains.list >sort.output

Bii o ṣe le Lo Itọsọna I/O Lilo Awọn Ọpa

Lati ṣe atunṣe iṣiṣẹ aṣẹ kan gẹgẹbi titẹwọle ti omiiran, o le lo awọn paipu, eyi jẹ ọna ti o lagbara lati kọ awọn laini aṣẹ to wulo fun awọn iṣẹ ti o nira.

Fun apẹẹrẹ, aṣẹ ti o wa ni isalẹ yoo ṣe akojọ awọn faili marun ti o yipada laipe.

$ ls -lt | head -n 5 

Nibi, awọn aṣayan:

  1. -l - jẹ ki ọna kika atokọ gigun
  2. mu ki
  3. -t - lẹsẹsẹ nipasẹ akoko iyipada pẹlu awọn faili tuntun julọ ni a fihan ni akọkọ
  4. -n - ṣalaye nọmba awọn ila awọn akọle lati fihan

Awọn ofin pataki fun Awọn opo gigun ile

Nibi, a yoo ṣe atunyẹwo ni ṣoki awọn ofin pataki meji fun kikọ awọn opo gigun kẹkẹ ati pe wọn jẹ:

xargs eyiti o lo lati kọ ati ṣiṣẹ awọn laini aṣẹ lati titẹ sii boṣewa. Ni isalẹ jẹ apẹẹrẹ ti opo gigun ti epo kan eyiti o nlo xargs, a lo aṣẹ yii lati daakọ faili kan sinu awọn ilana pupọ ni Lainos:

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

Ati awọn aṣayan:

  1. -n 1 - nkọ awọn xargs lati lo ni ọpọlọpọ ariyanjiyan kan fun laini aṣẹ ati firanṣẹ si aṣẹ cp
  2. cp - awọn ẹda faili naa
  3. -v - ṣe afihan ilọsiwaju ti aṣẹ ẹda.

Fun awọn aṣayan lilo diẹ sii ati alaye, ka nipasẹ oju-iwe eniyan xargs:

$ man xargs 

Aṣẹ tee kan ka lati titẹwọle boṣewa ati kọwe si iṣelọpọ deede ati awọn faili. A le ṣe afihan bi tee ṣe n ṣiṣẹ bi atẹle:

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

Awọn iṣẹ iṣakoso eto Linux.

Lati ni imọ siwaju sii nipa awọn asẹ Lainos ati awọn paipu, ka nkan yii Wa Top 10 Awọn Adirẹsi IP Wiwọle si Server Apache, fihan apẹẹrẹ ti o wulo ti lilo awọn awoṣe ati awọn paipu.

Ninu nkan yii, a ṣalaye awọn ipilẹ ti Ìtúnjúwe I/O ni Linux. Ranti lati pin awọn ero rẹ nipasẹ apakan esi ni isalẹ.