Параллельное выполнение команд

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

Один из наиболее эффективных(и эффектных!) способов реализации многозадачности текстового режима — запуск программ в различных виртуальных консолях, переключение между которыми осуществляется с помощью комбинации клавиш Alt|+^F#^, где # — номер соответствующей виртуальной консоли. Однако эта возможность реализуется не средствами командной оболочки, а благодаря свойствам системной консоли Linux. Подробнее о виртуальных консолях будет говориться в«Руководстве администратора».

Оболочка bash допускает последовательное выполнение команд - одна за другой. Для этого серия команд вводится одной строкой, и разделяется символом ; . В этом случае сначала выполняется команда 1, по ее завершении — команда 2 и т.д. Так, в конструкции

cd $HOME; Is *.html; cp ./*.html $HOME/web/

сначала осуществляется переход в домашний каталог пользователя, затем выводится список всех содержащихся в нем HTML-документов и, наконец, они копируются в подкаталог ~/web/.

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

Для запуска программы в фоновом режиме в командной строке достаточно ввести после всех опций и аргументов команды, знак амперсанда (символ &). Результатом будет возвращение приглашения командной строки сразу после нажатия клавиши Enter , не дожидаясь завершения запущенной команды.

В фоновом режиме имеет смысл запускать долговыполняюшиеся команды и не требующие интерактивного вмешательства пользователя, например, копирование больших массивов данных, архивирование файлов и т.д. В иных случаях можно прибегнуть к методу контроля заданий ( jobs control ). Он заключается в приостановке выполнения текущей задачи комбинацией клавиш Ctrl + Z , возвращающей приглашение командной строки, в которой запускаются любые команды в любом количестве, каждая из которых, в свою очередь, может быть приостановлена комбинацией клавиш Ctrl + Z .

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

[1] Stopped man bash

[2] Stopped vi /tmp/script.sh

[3]- Stopped less cur/aspbooks/install.txt

[4]+ Stopped lynx cur/onix/index.html

Цифра в квадратныхскобкахслева и есть номер искомой задачи, следующая колонка — состояние задачи (в данном примере Stopped — приостановленная), и последняя — ее имя. Следовательно, чтобы вернуться к просмотру документации по оболочке bash , следует дать команду fg 1, для перех ода к просмотру html-файла в браузере Lynx — прервать просмотр man-страницы и дать команду fg 4, и так далее.

Еще материалы по теме: