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:
- a parancs eredménye – adatok, amelyek előállítására a program készült, és
- 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:
- stdin vagy 0 – a billentyűzethez van csatlakoztatva, a legtöbb program ebből a fájlból olvassa be a bemenetet.
- stdout vagy 1 – a képernyőhöz van csatolva, és minden program elküldi az eredményt ebbe a fájlba, és
- 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:
-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.-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:
-l
– lehetővé teszi a hosszú listaformátumot-t
– rendezés módosítási idő szerint, a legújabb fájlok jelennek meg először-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:
-n 1
– arra utasítja az xargs-t, hogy parancssoronként legfeljebb egy argumentumot használjon, és küldje el a cp parancsnakcp
– a fájl másolása-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.