Wyszukiwanie w witrynie

Poznaj podstawy działania przekierowania we/wy (wejścia/wyjścia) w systemie Linux


Jednym z najważniejszych i najbardziej interesujących tematów związanych z administracją Linuksem jest przekierowywanie wejść/wyjść. Ta funkcja wiersza poleceń umożliwia przekierowywanie wejścia i/lub wyjścia poleceń z i/lub do plików lub łączenie wielu poleceń za pomocą potoków w celu utworzenia tak zwanego „potoku poleceń” .

Wszystkie uruchamiane przez nas polecenia zasadniczo generują dwa rodzaje wyników:

  1. wynik polecenia – dane, które program ma wygenerować, oraz
  2. status programu i komunikaty o błędach informujące użytkownika o szczegółach wykonania programu.

W systemie Linux i innych systemach uniksowych istnieją trzy domyślne pliki wymienione poniżej, które są również identyfikowane przez powłokę za pomocą numerów deskryptorów plików:

  1. stdin lub 0 – jest podłączony do klawiatury, większość programów odczytuje dane wejściowe z tego pliku.
  2. stdout lub 1 – jest dołączany do ekranu i wszystkie programy wysyłają swoje wyniki do tego pliku i
  3. stderr lub 2 – programy wysyłają komunikaty o stanie/błędach do tego pliku, który jest również dołączony do ekranu.

Dlatego przekierowanie we/wy umożliwia zmianę źródła wejściowego polecenia, a także miejsca, do którego wysyłane są jego dane wyjściowe i komunikaty o błędach. Jest to możliwe dzięki operatorom przekierowania „< ” i „> ”.

Jak przekierować standardowe wyjście do pliku w systemie Linux

Możesz przekierować standardowe wyjście jak w poniższym przykładzie, tutaj chcemy zapisać dane wyjściowe najwyższego polecenia do późniejszej kontroli:

top -bn 5 >top.log

Gdzie flagi:

  1. -b – włącza top działanie w trybie wsadowym, dzięki czemu możesz przekierować jego wyjście do pliku lub innego polecenia.
  2. -n – określa liczbę iteracji przed zakończeniem polecenia.

Możesz wyświetlić zawartość pliku top.log za pomocą polecenia cat w następujący sposób:

cat top.log

Aby dołączyć wynik polecenia, użyj operatora „>> ”.

Na przykład, aby dołączyć wynik powyższego polecenia top do pliku top.log, zwłaszcza w skrypcie (lub w wierszu poleceń), wpisz poniższy wiersz:

top -bn 5 >>top.log

Uwaga: przy użyciu numeru deskryptora pliku powyższe polecenie przekierowania wyjścia jest takie samo jak:

top -bn 5 1>top.log

Jak przekierować błąd standardowy do pliku w systemie Linux

Aby przekierować standardowy błąd polecenia, musisz jawnie określić numer deskryptora pliku, 2, aby powłoka zrozumiała, co próbujesz zrobić.

Na przykład poniższe polecenie ls spowoduje błąd, gdy zostanie wykonane przez zwykłego użytkownika systemu bez uprawnień roota:

ls -l /root/

Możesz przekierować standardowy błąd do pliku jak poniżej:

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

Aby dołączyć błąd standardowy użyj poniższego polecenia:

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

Jak przekierować standardowe wyjście/błąd do jednego pliku

Możliwe jest również przechwycenie wszystkich wyników polecenia (zarówno standardowych wyników, jak i standardowych błędów) w jednym pliku. Można to zrobić na dwa sposoby, określając numery deskryptorów plików:

1. Pierwsza to stosunkowo stara metoda, która działa w następujący sposób:

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

Powyższe polecenie oznacza, że powłoka najpierw wyśle wynik polecenia ls do pliku ls-error.log (używając >ls-error.log), a następnie zapisze wszystkie komunikaty o błędach do deskryptora pliku 2 (standardowe wyjście), który został przekierowany do pliku ls-error.log (za pomocą 2>&1 ). Oznacza to, że błąd standardowy jest również wysyłany do tego samego pliku co standardowe wyjście.

2. Druga i bezpośrednia metoda to:

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

Możesz także dołączyć standardowe wyjście i standardowy błąd do pojedynczego pliku, w następujący sposób:

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

Jak przekierować standardowe wejście do pliku

Większość, jeśli nie wszystkie, polecenia są wprowadzane ze standardowego wejścia, a domyślnie standardowe wejście jest podłączone do klawiatury.

Aby przekierować standardowe wejście z pliku innego niż klawiatura, użyj operatora „< ” jak poniżej:

cat <domains.list 

Jak przekierować standardowe wejście/wyjście do pliku

Możesz jednocześnie wykonać standardowe przekierowanie wejścia i standardowego wyjścia, używając polecenia sortowania, jak poniżej:

sort <domains.list >sort.output

Jak korzystać z przekierowania we/wy za pomocą potoków

Aby przekierować wyjście jednego polecenia na wejście innego, możesz użyć potoków. Jest to potężny sposób na budowanie przydatnych wierszy poleceń dla złożonych operacji.

Na przykład poniższe polecenie wyświetli listę pięciu najczęściej modyfikowanych plików.

ls -lt | head -n 5 

Tutaj opcje:

  1. -l – włącza długi format listy
  2. -t – sortuj według czasu modyfikacji, najnowsze pliki są wyświetlane jako pierwsze
  3. -n – określa liczbę wyświetlanych linii nagłówka

Ważne polecenia dotyczące budowania rurociągów

Tutaj pokrótce omówimy dwa ważne polecenia służące do budowania potoków poleceń, a są to:

xargs, który służy do budowania i wykonywania wierszy poleceń ze standardowego wejścia. Poniżej znajduje się przykład potoku wykorzystującego xargs. To polecenie służy do kopiowania pliku do wielu katalogów w systemie Linux:

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

I opcje:

  1. -n 1 – instruuje xargs, aby użył co najwyżej jednego argumentu na linię poleceń i wysłał do komendy cp
  2. cp – kopiuje plik
  3. -v – wyświetla postęp polecenia kopiowania.

Aby uzyskać więcej opcji użycia i informacji, przeczytaj stronę podręcznika xargs:

man xargs 

Polecenie tee odczytuje ze standardowego wejścia i zapisuje na standardowe wyjście i do plików. Możemy zademonstrować działanie tee w następujący sposób:

echo "Testing how tee command works" | tee file1 

Filtry plików lub tekstu są powszechnie używane z potokami w celu efektywnego wykonywania operacji na plikach w systemie Linux, przetwarzania informacji w wydajny sposób, na przykład restrukturyzacji wyników poleceń (może to być istotne przy generowaniu przydatnych raportów dla systemu Linux), modyfikowania tekstu w plikach oraz kilku innych czynności związanych z administracją systemem Linux zadania.

Aby dowiedzieć się więcej o filtrach i potokach systemu Linux, przeczytaj ten artykuł Znajdź 10 najpopularniejszych adresów IP uzyskujących dostęp do serwera Apache, przedstawiający przydatny przykład użycia filtrów i potoków.

W tym artykule wyjaśniliśmy podstawy przekierowania we/wy w systemie Linux. Pamiętaj, aby podzielić się swoimi przemyśleniami w sekcji opinii poniżej.