Оболочка - это базовый интерфейс для ввода команд в системе Linux. С его помощью вы можете напрямую ввести команду или указать файл (скрипт), который содержит последовательность команд, которые должны быть выполнены. Оболочки организованы в иерархии, и любая оболочка может создать новую оболочку. Новая оболочка считается дочерним процессом - подоболочкой - родительской оболочки, которая ее создает.
По умолчанию подоболочка зависит от ее родителя в том смысле, что если родительский процесс завершается, подоболочка также завершается. Любой вывод передается из подоболочки в родительскую оболочку.
Как создать подоболочку
В сценарии оболочки Bash вы создаете подоболочку с использованием скобки:
В этом примере цикл while заключен в скобки, что заставляет его выполнять в подоболочке оболочки, в которой выполняется файл сценария.
Запуск подзаголовка в фоновом режиме
Если вы не укажете, что подоболочка должна быть выполнена в фоновом режиме, родительская оболочка ждет завершения работы подоболочки до продолжения остальной части скрипта. Однако, если вы хотите параллельно запускать подоболочки, вы запускаете их в фоновом режиме, который выполняется с помощью символа амперсанда, следующего за выражением подзаголовка, как показано ниже:
Запуск нескольких подоболочек в параллельных
Если вы создаете несколько подоболочек в качестве фоновых процессов, вы можете запускать задачи параллельно. Как правило, операционная система использует разные процессоры или ядра для каждого процесса и подпроцесса, предполагая, что существует как минимум столько процессоров или ядер, сколько есть процессов. В противном случае задачи назначаются тем же процессорам или ядрам. В этом случае процессор или ядро непрерывно переключаются между назначенными задачами до завершения задач. Следующий пример имеет два подпроцесса. Первый - от 1 до 99, второй - от 1000 до 1099.
Используйте оператор wait, чтобы сообщить родительскому процессу дождаться завершения подпроцессов, прежде чем продолжить работу с остальной частью скрипта:
Использование для подсетей
Подголовки полезны, когда команды должны выполняться в конкретной среде или каталоге. Если каждая команда выполняется в другой подоболочке, нет никакого риска, что переменные настройки будут перемешаны. По завершении настройки и текущий каталог не нужно восстанавливать, так как среда родительского процесса не затрагивается ни одним из его подпроцессов.
Подголовки могут использоваться в определениях функций, чтобы их можно было выполнять несколько раз с разными параметрами.




