Jak już pisaliśmy na początku tego rozdziału proces powstaje w momencie egzekucji programu. Powstanie procesu odpowiada egzekucji pliku umieszczonego w pamięci centralnej.

 

W skład procesu wchodzą:

  • wykonywalny program lub polecenie i związane z nim dane
  • tzw. Kontekst wykonania.

 

Na kontekst wykonania składają się:

  • kontekst procesora (który w tej chwili omawiać nie będziemy)
  • identyfikator procesu tzw. PID czyli numer procesu
  • poziom priorytetu
  • stan procesu.

 

W momencie powstania procesu interpretator poleceń tworzy automatycznie mechanizm umożliwiający wprowadzania danych z klawiatury (wejście standardowe) oraz mechanizm pojawiania się tych danych na ekranie (wyjście standardowe). Interpretator tworzy także wyjście standardowe dla błędów, które może prowokować proces. Wyjściem standardowym błędów jest także ekran.

Standardowe wejścia-wyjścia mogą być skierowane do pliku, potoku (mechanizm potoku poznamy w następnym podrozdziale). Skierowanie standardowego wyjścia polega na wysłaniu tekstu wyświetlanego na ekranie do pliku. Wszystkie standardowe wejścia-wyjścia każdego procesu można także skierować do odpowiednich plików i proces zamiast szukać informacji w sygnałach wysyłanych z klawiatury, będzie ich poszukiwał w odpowiednich plikach. Mechanizm ten przedstawiamy na rysunku w rozdziale Filtry.

Wejściu standardowemu przypisany jest przez system numer 0. Wyjściu standardowemu przypisany jest numer 1. Wyjściu błędów przypisany jest numer  2.

Proces powstaje w momencie egzekucji programu (ale nie każdego o czym poniżej). Powstanie procesu odpowiada egzekucji pliku umieszczonego w pamięci centralnej. Każdy użytkownik w momencie logowania się do systemu prowokuje powstanie procesu. Ten proces, zdefiniowany w pliku /etc/passwd, jest interpretatorem poleceń basha.

Zdefiniujmy teraz podstawowe operatory kierujące (przełączające) standardowe wejścia-wyjścia czyli definiujemy mechanizmy przekierowań w systemie Linux

 

>     plik_k wyjście standardowe jest skierowane do pliku  plik_k. Jeśli plik_k wcześniej nie istniał, to zostanie to zostanie utworzony. Jeśli już istniał to jego zawartość zostanie wymazana (ziszczona).

 

>>   plik_k w tym wypadku wyjście standardowe zostanie dołączone do plik_k jeśli on już istniał.

 

<      plik_k wejściem standardowym nie będzie klawiatura, tylko zawartość pliku   plik_k

 

2>    plik_k →  wyjście standardowe błędów będzie skierowane do pliku_k. Jeśli plik wcześniej nie istniał to zostanie utworzony. Jeśli istniał jego zawartość zostanie wymazana.

 

2>>  plik_k →  jeśli  plik_k istniał to jego zawartość nie będzie wymazana

 

2>&1 →  skierowuje wyjście standardowe błędów do tego samego pliku co wyjście standardowe

 

 

Przykłady:

$ ls   >  tymczasowy #zapisanie listy plików katalogu bieżącego do pliku „tymczasowy”. Zakładamy, że w katalogu znajdują się dwa poniższe pliki:

-rwxr-x---  1     piotr     grupa    265   juin 20  14:00    plik1

-rwxr-x---  1     piotr     grupa    267   juin 20  14:10    plik2

 

$ cat plikb

1       2       3       4       5       6       7

 

$ ls  >> plikb #dopisanie do pliku  plikb listy plików z katalogu bieżącego

 

$  cat  plikb

1       2       3       4       5       6       7

-rwxr-x---  1     piotr     grupa    265   juin 20  14:00    plik1

-rwxr-x---  1     piotr     grupa    267   juin 20  14:10    plik2

 

$ echo    ===================  > rezultat

$ date  >> rezultat

$ echo    ===================  > rezultat


Plik „rezultat’’ będzie zawierał następujące poniższe informacje:

$ cat  rezultat

===================

Sun May  15  22:41:48  GMT-0200 2001

===================

Dlaczego ?

 


Kurs Linux - Bash przekierowania w systemie Linux