Bądź: Wyszukaj na stronie z użyciem Google
reklama:

środa, 9 grudnia 2009

Podstawy: Strumienie i potoki w Linuksie

Autor: , 19:17, środa, 9 grudnia 2009


Jeżeli ktoś nie miał wcześniej styczności ze strumieniami i potokami, pewnie myśli, że będę tu opisywał coś związanego z wodą. Otóż nie. Każdy administrator systemu Linux, powinien znać pojęcie strumieni oraz wiedzieć trochę więcej o potokach i ich przekazywaniu.

Wpis przygotował Mijagi z serwisu dla uczniów - technik-informatyk.info.

Każdemu procesowi w Linuksie są przypisane trzy strumienie danych: wejściowy, wyjściowy oraz błędów. Ponadto, każdy proces w momencie uruchomienia musi mieć określone miejsca, z których pobiera dane i do których je przekazuje. Domyślnym strumieniem danych dla powłoki bash jest klawiatura, dane wyjściowe i błędów są kierowane na ekran. Wszystkie procesy są identyfikowane poprzez liczby (deskryptory). Deskryptory są trzy:

* Deskryptor 0 – stdin
* Deskryptor 1 – stdout
* Deskryptor 2 – stderr

Są one przypisane domyślnie, stdin – strumień znaków z klawiatury terminala, stdout – przypisanie strumienia danych na ekran, stderr – podobnie jak strumień wyjścia, przekazanie na ekran.

Domyślne przypisanie, jak się domyślamy można zmienić. Pokaże kilka przykładów z mojej konsolki, jak przekierować strumienie. Załłóżmy, że chcemy wykonać polecenie ls, ale strumien wyjściowy (stdout), chcemy ujrzeć w pliku, a nie w konsoli.

mijagi@mijagi-laptop:~$ ls > ~/Pulpit/test.txt
Po wywołaniu tego polecenia, na pulpicie utworzy nam się plik test.txt z zawartością strumienia wyjścia komendy ls, czyli wylistowanie katalogów i plików w moim katalogu domowym. To gdzie chcemy przekazać strumień, zależy od znaku, w tym przypadku “>”. Operatorów jest znacznie więcej.
 
W tym przypadku mogliśmy również użyć operatora “>>“, jaka jest różnica? Jeżeli plik test.txt, istniałby w podanej lokalizacji to przy użyciu >, zostałby nadpisany. Natomiast zastosowanie >>, mówi o tym, że jeśli plik istnieje, trzeba dopisać zawartośc na końcu pliku bez jego nadpisywania.

Możemy przekazywać do plików nie tylko strumienie wyjścia. Do przekazania innego strumienia, trzeba posłużyć się znajomościa numerologiczną deskryptorów, które opisałem wcześniej.

Przykład: standardowe wyjście błedu zostanie skierowane do pliku a nie na ekran. Plik otrzyma deskryptor 2.

mijagi@mijagi-laptop:~$ ls 2> ~/Pulpit/test.txt
Dzięki temu, w pliku test.txt ujrzymy tylko ewentualne błędy, natomiast na ekranie ujrzymy strumień wyjścia. W tym przypadku analogicznie działa zasada z nadpisywaniem pliku przez operator > i dopisywaniem do pliku dzięki operatorowi >>.


Po co stosować potoki?

Administratorzy częstu używają potoków do prowadzenia logów. Po co ktoś ma przyglądać się w konsole godzinami i czekać kiedy coś się wydarzy, skoro może skierować strumień do pliku i w wolnym czasie przejrzeć go. W zastosowaniu potoków, tak jak w wielu przypadkach ogranicza nas jedynie wyobraźnia.

Tagi:

blog comments powered by Disqus

Prześlij komentarz


Popularne posty

Etykiety