Tgħallem Il-Bażi ta' Kif Jaħdem id-Direzzjoni mill-ġdid tal-Linux I/O (Input/Output).


Wieħed mis-suġġetti l-aktar importanti u interessanti taħt l-amministrazzjoni tal-Linux huwa d-direzzjoni mill-ġdid tal-I/O. Din il-karatteristika tal-linja tal-kmand tippermettilek li terġa 'tidderieġi l-input u/jew l-output ta' kmandi minn u/jew lejn fajls, jew tingħaqad diversi kmandi flimkien billi tuża pajpijiet biex tifforma dak li hu magħruf bħala \pipeline ta' kmand.

Il-kmandi kollha li nħaddmu b'mod fundamentali jipproduċu żewġ tipi ta 'output:

  1. ir-riżultat tal-kmand – dejta li l-programm huwa ddisinjat li jipproduċi, u
  2. l-istatus tal-programm u l-messaġġi ta' żball li jinfurmaw lill-utent bid-dettalji tal-eżekuzzjoni tal-programm.

Fil-Linux u sistemi oħra bħal Unix, hemm tliet fajls default imsemmija hawn taħt li huma wkoll identifikati mill-qoxra bl-użu ta' numri tad-deskritturi tal-fajls:

  1. stdin jew 0 – huwa konness mat-tastiera, il-biċċa l-kbira tal-programmi jaqraw l-input minn dan il-fajl.
  2. stdout jew 1 – huwa mehmuż mal-iskrin, u l-programmi kollha jibagħtu r-riżultati tagħhom lil dan il-fajl u
  3. stderr jew 2 – il-programmi jibagħtu messaġġi ta' status/żball lil dan il-fajl li huwa wkoll mehmuż mal-iskrin.

Għalhekk, id-direzzjoni mill-ġdid I/O tippermettilek li tbiddel is-sors tad-dħul ta 'kmand kif ukoll fejn jintbagħtu l-output u l-messaġġi ta' żball tiegħu. U dan isir possibbli mill-operaturi ta' direzzjoni mill-ġdid \<” u \>”.

Kif tidderieġi l-output standard għall-fajl fil-Linux

Tista 'tindirizza mill-ġdid l-output standard bħal fl-eżempju hawn taħt, hawnhekk, irridu naħżnu l-output tal-kmand ta' fuq għal spezzjoni aktar tard:

$ top -bn 5 >top.log

Fejn il-bnadar:

  1. -b – jippermetti lil top jaħdem fil-modalità tal-lott, sabiex tkun tista’ tidderieġi mill-ġdid l-output tiegħu lejn fajl jew kmand ieħor.
  2. -n – jispeċifika n-numru ta' iterazzjonijiet qabel ma jintemm il-kmand.

Tista' tara l-kontenut tal-fajl top.log billi tuża l-kmand tal-qtates kif ġej:

$ cat top.log

Biex tehmeż l-output ta’ kmand, uża l-operatur \>>”.

Per eżempju biex tehmeż l-output tal-kmand ta 'fuq hawn fuq fil-fajl top.log speċjalment fi skript (jew fuq il-linja tal-kmand), daħħal il-linja hawn taħt:

$ top -bn 5 >>top.log

Nota: Bl-użu tan-numru tad-deskrittur tal-fajl, il-kmand tal-output redirect hawn fuq huwa l-istess bħal:

$ top -bn 5 1>top.log

Kif Tindirizza mill-ġdid Żball Standard għall-Fajl fil-Linux

Biex tindirizza mill-ġdid żball standard ta' kmand, trid tispeċifika espliċitament in-numru tad-deskrittur tal-fajl, 2 biex il-qoxra tifhem dak li qed tipprova tagħmel.

Pereżempju l-kmand ls hawn taħt se jipproduċi żball meta jiġi eżegwit minn utent tas-sistema normali mingħajr privileġġi tal-għeruq:

$ ls -l /root/

Tista' tidderieġi mill-ġdid l-iżball standard għal fajl kif ġej:

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

Sabiex tehmeż l-iżball standard, uża l-kmand hawn taħt:

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

Kif Tindirizza mill-ġdid l-Output Standard/Żball Għal Fajl Wieħed

Huwa wkoll possibbli li jinqabad l-output kollu ta 'kmand (kemm output standard kif ukoll żball standard) f'fajl wieħed. Dan jista' jsir b'żewġ modi possibbli billi jiġu speċifikati n-numri tad-deskritturi tal-fajl:

1. L-ewwel huwa metodu relattivament antik li jaħdem kif ġej:

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

Il-kmand ta 'hawn fuq ifisser li l-qoxra l-ewwel tibgħat l-output tal-kmand ls lill-fajl ls-error.log (bl-użu ta' >ls-error.log), u mbagħad tikteb il-messaġġi ta 'żball kollha lid-deskrittur tal-fajl 2 (output standard) li ġie ridirett lejn il-fajl ls-error.log (bl-użu 2>&1). Li jimplika li l-iżball standard jintbagħat ukoll lill-istess fajl bħall-output standard.

2. It-tieni metodu u dirett huwa:

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

Tista' wkoll tehmeż output standard u żball standard ma' fajl wieħed bħal dan:

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

Kif tidderieġi mill-ġdid l-Input Standard għall-Fajl

Ħafna jekk mhux il-kmandi kollha jiksbu l-input tagħhom minn input standard, u awtomatikament input standard huwa mehmuż mat-tastiera.

Biex tindirizza mill-ġdid input standard minn fajl għajr it-tastiera, uża l-operatur \<” kif hawn taħt:

$ cat <domains.list 

Kif tidderieġi mill-ġdid l-Input/Output Standard għall-Fajl

Tista 'twettaq input standard, direzzjoni mill-ġdid tal-output standard fl-istess ħin billi tuża kmand ta' sort kif hawn taħt:

$ sort <domains.list >sort.output

Kif tuża I/O Redirection Bl-użu tal-pajpijiet

Biex terġa 'tidderieġi l-output ta' kmand wieħed bħala input ta 'ieħor, tista' tuża pajpijiet, dan huwa mezz qawwi ta 'bini ta' linji ta 'kmand utli għal operazzjonijiet kumplessi.

Pereżempju, il-kmand hawn taħt se jelenka l-aqwa ħames fajls modifikati reċentement.

$ ls -lt | head -n 5 

Hawnhekk, l-għażliet:

  1. -l – jippermetti format ta’ lista twila
  2. -t – issortja skond il-ħin tal-modifika bl-aktar fajls ġodda jintwerew l-ewwel
  3. -n – jispeċifika n-numru ta' linji ta' header li għandhom juru

Kmandi Importanti għall-Bini Pipelines

Hawnhekk, se nirrevedu fil-qosor żewġ kmandi importanti għall-bini ta' pipelines ta' kmand u huma:

xargs li tintuża biex tibni u tesegwixxi linji ta' kmand minn input standard. Hawn taħt hemm eżempju ta 'pipeline li juża xargs, dan il-kmand jintuża biex jikkopja fajl f'direttorji multipli fil-Linux:

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

U l-għażliet:

  1. -n 1 – jagħti struzzjonijiet lil xargs biex jużaw l-iktar argument wieħed għal kull linja ta’ kmand u jibagħtu lill-kmand cp
  2. cp – tikkopja l-fajl
  3. -v – juri l-progress tal-kmand tal-kopja.

Għal aktar għażliet ta’ użu u informazzjoni, aqra l-paġna man xargs:

$ man xargs 

Kmand tee jaqra minn input standard u jikteb fuq output u fajls standard. Nistgħu nuru kif it-tee taħdem kif ġej:

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

Ħidmiet ta 'amministrazzjoni tas-sistema Linux.

Biex titgħallem aktar dwar il-filtri u l-pajpijiet tal-Linux, aqra dan l-artikolu Sib l-Ewwel 10 Indirizzi IP Aċċess għal Apache Server, juri eżempju utli ta 'użu ta' filtri u pajpijiet.

F'dan l-artikolu, spjegajna l-prinċipji fundamentali tar-ridirezzjoni tal-I/O fil-Linux. Ftakar li taqsam il-ħsibijiet tiegħek permezz tat-taqsima tal-feedback hawn taħt.