Powłoka jest podstawowym interfejsem do wprowadzania poleceń w systemie Linux. Dzięki niemu możesz wpisać polecenie bezpośrednio lub określić plik (skrypt) zawierający sekwencję poleceń do wykonania. Pociski są zorganizowane w hierarchii, a każda powłoka może utworzyć nową powłokę. Nowa powłoka jest traktowana jako proces podrzędny - podpowłokę powłoki nadrzędnej, która ją tworzy.
Domyślnie podpowłoki są zależne od rodzica w tym sensie, że jeśli proces nadrzędny zostanie zakończony, podpowł także również się kończy. Wszelkie dane wyjściowe są przekazywane z podpowłok do powłoki nadrzędnej.
Jak utworzyć podpowłokę
W skrypcie powłoki Bash tworzysz podpowłokę za pomocą notacji nawiasów:
W przykładzie pętla while jest ujęta w nawias, co powoduje, że jest wykonywana w podpowłoce powłoki, w której jest wykonywany plik skryptu.
Uruchamianie powłoki w tle
Dopóki nie określisz, że podpowłok ma być wykonywane w tle, nadrzędna powłoka czeka na zakończenie podpowstania przed kontynuowaniem reszty skryptu. Jeśli jednak chcesz uruchamiać podpowłoki równolegle, uruchamiasz je w tle, co jest realizowane za pomocą znaku ampersand po wyrażeniu podpowłoki, jak pokazano tutaj:
Uruchamianie wielu podpowłok w równoległym
Jeśli utworzysz wiele podpowłok jako procesów działających w tle, możesz uruchamiać zadania równolegle. Zwykle system operacyjny używa różnych procesorów lub rdzeni dla każdego procesu i podprocesu, zakładając, że istnieje co najmniej tyle procesorów lub rdzeni, ile jest procesów. W przeciwnym razie zadania są przypisywane do tych samych procesorów lub rdzeni. W takim przypadku procesor lub rdzeń w sposób ciągły przełącza się między przydzielonymi zadaniami do czasu zakończenia zadań. Następny przykład ma dwa podprocesy. Pierwszy liczy od 1 do 99, a drugi od 1000 do 1099.
Użyj instrukcji wait, aby nakazać procesowi nadrzędnemu oczekiwanie na zakończenie podprocesów przed kontynuowaniem dalszej części skryptu:
Wykorzystuje do podpowłoki
Podsady są użyteczne, gdy polecenia muszą być wykonywane w określonym środowisku lub katalogu. Jeśli każde polecenie zostanie wykonane w innej podpowłoce, nie ma ryzyka, że zmienne ustawienia zostaną pomieszane. Po zakończeniu ustawienia i bieżący katalog nie muszą być przywracane, ponieważ żaden proces podrzędny nie ma wpływu na środowisko procesu macierzystego.
W definicjach funkcji można stosować podpowłoki, dzięki czemu można je wykonywać wielokrotnie z różnymi parametrami.




