Skip to main content

Подсистемы Bash и параллельная обработка

5. Как вставить картинку в HTML (Июнь 2026)

5. Как вставить картинку в HTML (Июнь 2026)
Anonim

Оболочка - это базовый интерфейс для ввода команд в системе Linux. С его помощью вы можете напрямую ввести команду или указать файл (скрипт), который содержит последовательность команд, которые должны быть выполнены. Оболочки организованы в иерархии, и любая оболочка может создать новую оболочку. Новая оболочка считается дочерним процессом - подоболочкой - родительской оболочки, которая ее создает.

По умолчанию подоболочка зависит от ее родителя в том смысле, что если родительский процесс завершается, подоболочка также завершается. Любой вывод передается из подоболочки в родительскую оболочку.

Как создать подоболочку

В сценарии оболочки Bash вы создаете подоболочку с использованием скобки:

В этом примере цикл while заключен в скобки, что заставляет его выполнять в подоболочке оболочки, в которой выполняется файл сценария.

Запуск подзаголовка в фоновом режиме

Если вы не укажете, что подоболочка должна быть выполнена в фоновом режиме, родительская оболочка ждет завершения работы подоболочки до продолжения остальной части скрипта. Однако, если вы хотите параллельно запускать подоболочки, вы запускаете их в фоновом режиме, который выполняется с помощью символа амперсанда, следующего за выражением подзаголовка, как показано ниже:

Запуск нескольких подоболочек в параллельных

Если вы создаете несколько подоболочек в качестве фоновых процессов, вы можете запускать задачи параллельно. Как правило, операционная система использует разные процессоры или ядра для каждого процесса и подпроцесса, предполагая, что существует как минимум столько процессоров или ядер, сколько есть процессов. В противном случае задачи назначаются тем же процессорам или ядрам. В этом случае процессор или ядро ​​непрерывно переключаются между назначенными задачами до завершения задач. Следующий пример имеет два подпроцесса. Первый - от 1 до 99, второй - от 1000 до 1099.

Используйте оператор wait, чтобы сообщить родительскому процессу дождаться завершения подпроцессов, прежде чем продолжить работу с остальной частью скрипта:

Использование для подсетей

Подголовки полезны, когда команды должны выполняться в конкретной среде или каталоге. Если каждая команда выполняется в другой подоболочке, нет никакого риска, что переменные настройки будут перемешаны. По завершении настройки и текущий каталог не нужно восстанавливать, так как среда родительского процесса не затрагивается ни одним из его подпроцессов.

Подголовки могут использоваться в определениях функций, чтобы их можно было выполнять несколько раз с разными параметрами.