Weboldal keresés

Ismerje meg a Linux I/O (Input/Output) átirányításának működésének alapjait


A Linux adminisztráció egyik legfontosabb és legérdekesebb témája az I/O átirányítás. A parancssor ezen funkciója lehetővé teszi, hogy a parancsok bemenetét és/vagy kimenetét fájlokból és/vagy fájlokhoz irányítsa át, vagy több parancsot csővezetékek segítségével egyesítsen egy úgynevezett „parancsfolyamat” létrehozására. .

Az összes általunk futtatott parancs alapvetően kétféle kimenetet eredményez:

  1. a parancs eredménye – adatok, amelyek előállítására a program készült, és
  2. a program állapota és hibaüzenetek, amelyek tájékoztatják a felhasználót a program végrehajtásának részleteiről.

Linuxban és más Unix-szerű rendszerekben három alapértelmezett fájl található az alábbiakban, amelyeket a shell is azonosít a fájlleíró számok segítségével:

  1. stdin vagy 0 – a billentyűzethez van csatlakoztatva, a legtöbb program ebből a fájlból olvassa be a bemenetet.
  2. stdout vagy 1 – a képernyőhöz van csatolva, és minden program elküldi az eredményt ebbe a fájlba, és
  3. stderr vagy 2 – a programok állapot-/hibaüzeneteket küldenek erre a fájlra, amely szintén a képernyőhöz van csatolva.

Ezért az I/O átirányítás lehetővé teszi a parancs bemeneti forrásának, valamint a kimeneti és a hibaüzenetek elküldésének célját. Ezt pedig a “< ” és “> ” átirányítási operátorok teszik lehetővé.

Hogyan lehet átirányítani a szabványos kimenetet fájlba Linux alatt

Átirányíthatja a szabványos kimenetet az alábbi példában látható módon, itt szeretnénk tárolni a top parancs kimenetét későbbi ellenőrzés céljából:

top -bn 5 >top.log

Hol vannak a zászlók:

  1. -b – lehetővé teszi a top kötegelt módban történő futtatását, így a kimenetét átirányíthatja egy fájlra vagy egy másik parancsra.
  2. -n – a parancs befejezése előtti iterációk számát határozza meg.

A top.log fájl tartalmát a cat paranccsal tekintheti meg az alábbiak szerint:

cat top.log

Egy parancs kimenetének hozzáfűzéséhez használja a ">> " operátort.

Például a fenti top parancs kimenetének hozzáfűzéséhez a top.log fájlhoz, különösen egy szkripten belül (vagy a parancssorban), írja be az alábbi sort:

top -bn 5 >>top.log

Megjegyzés: A fájlleíró szám használatával a fenti kimeneti átirányítási parancs megegyezik a következővel:

top -bn 5 1>top.log

A szabványos hiba átirányítása a fájlba Linux alatt

Egy parancs szabványos hibájának átirányításához kifejezetten meg kell adnia a fájlleíró számát (2), hogy a shell megértse, mit próbál tenni.

Például az alábbi ls parancs hibát produkál, ha egy normál rendszerfelhasználó hajtja végre root jogosultságokkal nem rendelkező:

ls -l /root/

A standard hibát az alábbiak szerint irányíthatja át egy fájlba:

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

A standard hiba hozzáfűzéséhez használja az alábbi parancsot:

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

A szabványos kimenet/hiba átirányítása egy fájlba

Lehetőség van arra is, hogy egy parancs összes kimenetét (mind a szabványos kimenetet, mind a szabványos hibát) egyetlen fájlba rögzítse. Ezt kétféleképpen lehet megtenni a fájlleíró számok megadásával:

1. Az első egy viszonylag régi módszer, amely a következőképpen működik:

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

A fenti parancs azt jelenti, hogy a shell először elküldi az ls parancs kimenetét az ls-error.log fájlba (az >ls-error.log használatával), majd kiírja minden hibaüzenet a 2 fájlleíróhoz (normál kimenet), amely az ls-error.log fájlba lett átirányítva (a 2>&1 használatával ). Ez arra utal, hogy a szabványos hiba is ugyanabba a fájlba kerül, mint a szabványos kimenet.

2. A második és közvetlen módszer a következő:

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

A szabványos kimenetet és a szabványos hibát is hozzáfűzheti egyetlen fájlhoz, például:

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

A szabványos bemenet átirányítása fájlba

A legtöbb, ha nem minden parancs a szabványos bemenetről kapja a bemenetet, és alapértelmezés szerint a szabványos bemenet a billentyűzethez van csatlakoztatva.

Ha a szabványos bevitelt a billentyűzettől eltérő fájlról szeretné átirányítani, használja a “< ” operátort az alábbiak szerint:

cat <domains.list 

A szabványos bemenet/kimenet átirányítása fájlba

Egyszerre is végrehajthat szabványos bemeneti és szabványos kimeneti átirányítást a sort paranccsal az alábbiak szerint:

sort <domains.list >sort.output

Az I/O átirányítás használata csövek használatával

Egy parancs kimenetének átirányításához egy másik bemeneteként használhatja a csővezetékeket, ez egy hatékony eszköz a hasznos parancssorok létrehozására összetett műveletekhez.

Például az alábbi parancs felsorolja az öt legjobban módosított fájlt.

ls -lt | head -n 5 

Íme, a lehetőségek:

  1. -l – lehetővé teszi a hosszú listaformátumot
  2. -t – rendezés módosítási idő szerint, a legújabb fájlok jelennek meg először
  3. -n – megadja a megjelenítendő fejlécsorok számát

Fontos parancsok a csővezetékek építéséhez

Itt röviden áttekintünk két fontos parancsot a parancsfolyamatok felépítéséhez, és ezek a következők:

xargs, amely szabványos bemenetről parancssorok létrehozására és végrehajtására szolgál. Az alábbiakban egy példa látható egy folyamatra, amely xargs parancsot használ. Ezzel a paranccsal egy fájl több könyvtárba másolható Linuxon:

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

És a lehetőségek:

  1. -n 1 – arra utasítja az xargs-t, hogy parancssoronként legfeljebb egy argumentumot használjon, és küldje el a cp parancsnak
  2. cp – a fájl másolása
  3. -v – a másolási parancs folyamatát mutatja.

További használati lehetőségekért és információkért olvassa el axargs kézikönyvoldalt:

man xargs 

A tee parancs a szabványos bemenetről olvas, és szabványos kimenetre és fájlokra ír. A következőképpen tudjuk bemutatni, hogyan működik a póló:

echo "Testing how tee command works" | tee file1 

A fájl- vagy szövegszűrőket gyakran használják a csövekkel a hatékony Linux-fájlműveletek érdekében, az információk hatékony feldolgozására, például a parancsok kimenetének átstrukturálására (ez létfontosságú lehet hasznos Linux-jelentések létrehozásához), a fájlok szövegének módosítására, valamint számos egyéb Linux rendszeradminisztrációra. feladatokat.

Ha többet szeretne megtudni a Linux-szűrőkről és -csövekről, olvassa el ezt a cikket Az Apache-kiszolgálót elérő 10 legnépszerűbb IP-cím keresése, amely hasznos példát mutat be a szűrők és csővezetékek használatára.

Ebben a cikkben elmagyaráztuk az I/O átirányítás alapjait Linuxban. Ne felejtse el megosztani gondolatait az alábbi visszajelzési részben.