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