Выполнение нескольких задач одновременно

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

Для запуска фоновых, долго выполняющихся команд, без отрыва от текущей задачи используется «&».

& - фоновое выполнение предшествующей команды;

&& - выполнение последующей команды при условии нормального завершения предыдущей, иначе игнорировать;

|| - выполнение последующей команды при ненормальном завершении предыдущей, иначе игнорировать.

Для группировки команд shell использует фигурные «{}» и круглые «()» скобки. Рассмотрим примеры, сочетающие различные способы группировки: Если введена командная строка, где k1, k2 и k3 - какие-то команды

$ k1 && k2; k3

то k2 будет выполнена только при успешном завершении k1. После любого из исходов обработки k2 (т.е. k2 будет выполнена, либо пропущена) будет выполнена k3.

$ k1 && {k2; k3}

Здесь обе команды, k2 и k3, будут выполнены только при успешном завершении k1.

$ {k1; k2} &

В фоновом режиме будет выполняться последовательность команд k1 и k2.

Команда sleep ожидает указанное число секунд, прежде чем закончить свое выполнение:

$ (sleep 5; date) & date

Дата будет сразу выведена на экран, но это будет результат выполнения второй команды date. После даты появится приглашение - так что Вы можете продолжать ввод команд, и лишь затем через 5 секунд дата, выданная первой командой date.

Что происходит в системе при выполнении такой командной строки? Фоновый процесс начинается, но сразу «засыпает». Тем временем вторая команда date выдает текущее время, а интерпретатор shell - приглашение для ввода новой команды. Пятью секундами позже прекращается выполнение команды sleep, и первая команда date выдает новое время. Это удобный способ отложить запуск команды на будущее.

(sleep 120; echo The tea is ready) & echo The tea will be ready through 2 minutes

Выполнение команд, заключенных в скобки будет переведено в фоновый режим. Вторая команда echo немедленно выдаст на экран сообщение: "The tea will be ready through 2 minutes" (Чай будет готов через 2 минуты). После чего в следующей строке появится системное приглашение, и Вы сможете продолжить выполнение команд. Через две минуты закончится фоновое выполнение команды sleep и команда echo выдаст на экран сообщение о том, что чай готов.

При генерации имен используют метасимволы:

­ * – произвольная (возможно пустая) последовательность символов;

­? – один произвольный символ;

­ [...] – любой из символов, указанных в скобках перечислением и/или с указанием диапазона.

Примеры:

cat f* – выдаст все файлы каталога, начинающиеся с «f»;

cat *f* – выдаст все файлы, содержащие «f»;

cat program.? – выдаст файлы данного каталога с однобуквенными расширениями, скажем «program.c» и «program.o», но не выдаст «program.com»;

cat [a-d]* – выдаст файлы, которые начинаются с a, b, c, d. Аналогичный эффект дадут и команды «cat [abcd]*» и «cat [bdac]*».

 

 

Вопросы для самоконтроля

 

1 Что такое shell?

2 Каким образом работает shell?

3 Какие еще существуют виды оболочек в Linux?

4 Как можно узнать значение переменных Вашей среды?

5 Что является стандартным входом и стандартным выходом в Linux?

6 Каким образом команда cat работает со стандартным входом и стандартным выходом?

7 В чем назначение команды sort?

8 Что такое перенаправление (входа и выхода), и каким образом оно реализуется?

9 Рядом с каждой ниже перечисленной командой напишите результат ее выполнения: 1) сat 2) sort > primer 3) сat primer 4) cat primer > zadanie 5) cat < primer

10 Куда команда cat перенаправит информацию из файла, если указано имя несуществующего файла?

11 Что произойдет с содержимым файла, если в него перенаправить информацию из другого файла?

12 Что такое конвейер? Какую работу выполняет конвейер между двумя командами?

13 В чем преимущество выполнения команд с помощью конвейера и без него?

14 Что такое перенаправление с добавлением, и каким образом оно реализуется?

15 Где располагается информация, добавленная в фай с помощью перенаправления с добавлением?

16 В чем отличие выполнения программ в оперативном и фоновом режимах?

17 Каким образом реализуется выполнение фоновых программ?

18 Для чего необходима группировка команд, и каким образом она реализуется?

19 Для чего необходимы метасимволы? Назовите основные метасимволы.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: