Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Забродин УНИХ основы командного интерфейса 2010

.pdf
Скачиваний:
159
Добавлен:
16.08.2013
Размер:
1.33 Mб
Скачать

#номер задания фоновой задачи; $fg %1

#перевод из фонового в оперативный;

<ctrl*Z>

#приостанов оперативного процесса;

[1]+stopped inf>f.out $fg %1

#продолжение оперативного (бывшего фонового); $bg %1

#возврат процесса в фоновый режим;

[1]inf>f.out.

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

$nohup имя_фоновой_программы & — команда, во-первых,

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

Вместе с тем, вывод протокола работы фоновой программы можно перенаправить в специальный файл, который можно

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

$nohup имя_фон_программы>имя_файла&

Рассмотрим два примера применения команды nohup. Пример 1. nohup перенаправляет протокол в указанный файл: $nohup cat * > outfile &

[1] 972 $exit

# завершается работа оперативного процесса.

Повторный вход в систему: login:

password:

$ps -af|grep cat

# конвейер, выделяется строка с шаблоном cat

71

UID

PID

PPID

CMD

lev

972

1

cat *>outfile &

$

 

 

 

В примере “фоновый вычислительный процесс идет”, nohup становится самостоятельным процессом, и его PPID меняется — родительским процессом был shell (см. примеры выше), а стал init c PID=1, т.е. приоритет фонового процесса “усиливается” общесистемным процессом init и его выполнение будет продолжаться.

Примечание. В поле CMD может не указываться имя процедуры, а выводиться имя текущей утилиты этой процедуры, идентифицировать процедуру лучше по PID.

Если перенаправление протокола не использовать, то вывод автоматически осуществляется в систеный файл nohup.out, создаваемый системой в головном каталоге пользователя HOME.

Пример 2:

$nohup find / -user lev -type f & [1] 2301

<сообщение о выводе в nohup.out> $cd — переход в HOME

$cat nohup.out

<протокол команды find>

$

Команда nohup позволяет таким образом предупредить вывод на экран протокола фонового задания с прерыванием протокола работы оперативного процесса.

Пример: в чем разница в выполнении командных строк? $PR;pr2;pr3 & — в фоновом режиме выполняется только pr3; $(PR1;pr2;pr3) & — в фоновом режиме выполняются все про-

граммы (подстановка опции & перед выполнением каждой программы из списка).

72

5.3. УПРАВЛЕНИЕ ПРИОРИТЕТАМИ ПРОЦЕССОВ

Максимальный приоритет процессов каждого пользователя группы устанавливает администратор. Если при выполнении задания образуются несколько порожденных процессов, то все они имеют одинаковый приоритет равный родительскому. В этом случае все процессы получают ресурсы равными долями (простой режим разделения времени). При необходимости выделения наиболее важных родительских процессов порожденным второстепенным можно понизить приоритет с помощью команды:

nice [-k] имя_программы — выполнение программы, указанной в строке, с пониженным приоритетом.

-k — коэффициент понижения приоритета (k = 1;...10; по умол-

чанию k = 10).

Пример 1:

 

 

$ prog1 &

 

 

$ ps -al

 

 

........ PID ......

PRI

NI......CMD..

...................

20

sh

..................

. 20

prog1........

т.е. родительский и порожденный процессы имеют приоритет, равный 20.

Пример 2:

 

 

 

$ nice -5 prog2 &

 

 

[2] 3752

 

 

 

$ps -flu lev

 

 

 

........ PID ......

PRI .....

NI..

CMD

..................

. 20 ........

 

sh

........ 3752 .....

25 .......

5

prog2.

...................

20 ..

 

......

Приоритет процесса задачи prog2 понижен на 5 единиц, тем самым другие процессы этой группы имеют больше возможностей в использовании ресурсов.

Чем больше число, тем ниже приоритет.

73

5.4. ЗАВЕРШЕНИЕ ПРОЦЕССОВ

Завершение процессов – одна из функций управления процессами. Прекратить выполнение любого процесса можно с помощью команды:

kill [-опции] PID1 [PID2......] — передает сигнал процессу PID.

Сигнал — ключевое слово, при получении которого процесс выполняет некоторые действия. Сигналы с использованием команды kill могут передаваться другими прикладными процессами или системными программами (например, при появлении некоторых событий, как то сбой в канале, сигнала с таймера, завершения фонового процесса и пр.). Существуют двадцать пять видов сигналов, предназначенных для выполнения различных действий процессами при наступлении определенных событий в системе. С получением большинства сигналов процесс завершается самостоятельно. Тот, кто посылает сигнал, должен быть владельцем процесса или администратором. Для безусловного и немедленного завершения указанного процесса kill должен послать сигнал с именем TERM (по умолчанию). Другие сигналы передаются с помощью опции -S.

Значения опций:

-S<имя_сигнала> или

-№ — системный номер сигнала;

-lвывод на экран справочника имен сигналов.

Сигнал определяет дальнейшее действие процесса. Это еще один способ управления процессами (см. выше).

Примеры опций:

-S KILL — немедленное завершение процесса по сигналу KILL; -9 — то же, но уже по номеру сигнала KILL.

Пример:

$kill [-9] 3752 3752: killed

$

Пример завершения фонового процесса:

$kill %1 — указывается номер завершаемого задания

[1] +Terminated inf

$

74

Если процесс указан идентификатором "0", то команда kill уничтожает все процессы, связанные с текущим shell (завершается головной процесс swapper (имеющий PID=0) и все связванные с ним порожденные процессы – shell, прикладные задачи).

5.5.ПЕРЕХВАТЫВАНИЕ СИГНАЛОВ

Впроцедурах управления процессами особое место занимает команда:

trap ' список команд или имя sh-процедуры' сигнал1 сигнал2

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

Пример. Циклическая процедура выполняется до поступления одного из указанных сигналов:

$cat > trapfil

trap 'echo нажать Ctrl*C' INT QUIT TERM while true

do

echo цикл done <ctrl*C> $sh trapfil

цикл

цикл

…….

нажать Ctrl*C — поступил один из указанных трех сигналов

<ctrl*C>

$

# циклическая процедура будет завершена при поступлении хотя бы одного из # указанных сигналов.

Применение команды trap может быть самым разнообразным. Но глубокое её изучение требует предварительного знания всего списка сигналов и их назначения, а также наиболее часто встречающихся типовых применений trap. Эта задача выходит за рамки настоящего курса.

75

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

1.Понятия ресурсов и процессов в ОС UNIX. Принципы формирования и представления процессов. Общая схема организации управления процессами.

2.Принципы упорядочивания и управления процессами в ОС UNIX. Дескрипторы процессов.

3.Назначение и содержание дескриптора процесса. Приоритетные очереди процессов в ОС UNIX.

4.Средства командного языка для получения информации о процессах. Какие сведения о состоянии и очереди процессов данного терминала могут быть получены из листинга?

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

6.Механизм защиты фоновых процессов от внешних прерываний. Отображение механизма в листинге процессов. Пример.

7.Механизм и команда ОС UNIX по управлению приоритетами процессов в ОС UNIX. Пример применения команды и пример листинга.

8.Обзор команд по управлению процессами и их назначение. Примеры.

9.Обзор средств взаимодействия процессов и механизмов их работы.

10.Программные средства взаимодействия процессов. Передача сигналов. Пример применения команды.

11.Программные средства взаимодействия процессов. Команда перехватывания сигналов, ее назначение.

76

6. ПРАКТИКУМ ДЛЯ САМОСТОЯТЕЛЬНОГО ОСВОЕНИЯ КОМАНД

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

Практикум может быть выполнен в среде любой доступной операционной системы (System Y, AIX, Linux и др.), в основном на индивидуальном компьютере или для отдельныъх коммуникационных команд — в многотерминальном режиме. В качестве базового принят Korn-shell. Команды этой оболочки входят в стандарт POSIX, т.е. являются принадлежностью любой UNIX-подобной операционной системы.

Для анализа проделанной лабораторной работы в целом можно использовать команду history — вывод на экран выполненных команд.

Работа 1. ЗНАКОМСТВО С ОС UNIX

Изучаются команды:

date — определение текущей даты и времени; env — вывод значений переменных среды; who, id — идентификация пользователей;

write, mesg — команды обмена прямыми сообщениями; mail — отправление и чтение почтовых сообщений;

more — постраничный вывод содержимого файла на экран.

МЕТОДИКА ВЫПОЛНЕНИЯ

1.Войдите в систему с зарегистрированным администратором логическим именем и паролем. Проанализируйте сообщение системы. Чем заканчивается сообщение системы?

2.Проанализируйте содержание системного файла /etc/passwd. Найдите запись, относящуюся к Вам.

3.Детально проанализируйте и объясните каждое поле записи, его назначение.

77

4.Выведите на экран значения переменных среды. Проанализируйте назначение переменных.

5.Какая переменная определяет текст приглашения? Измените текст приглашения. Восстановите стандартное значение приглашения.

6.Выведите текущие дату и время. Проанализируйте текст сообщения.

7.Определите пользователей системы, работающих с системой параллельно с Вами, их логические имена и номера терминалов.

8.Договоритесь с соседним пользователем об организации обмена прямыми сообщениями. Обменяйтесь с ним сообщениями в режиме прямого диалога.

9.Исследуйте возможности средств блокирования и разблокирования приема сообщений.

10.По договоренности с коллегами обменяйтесь несколькими почтовыми сообщениями.

11.Проанализируйте возможности обработки поступивших почтовых сообщений.

12.Определите числовые идентификаторы Вас как пользователя

иВашей группы.

13.Проанализируйте с использованием команды history содержание лабораторной работы, продумайте ответы на нижеприведенные контрольные вопросы.

Контрольные вопросы

1.Объясните назначение информации, запрашиваемой системой

вначале работы.

2.В чем заключается процедура авторизации пользователя? Цель авторизации?

3.Объясните содержание и назначение каждого поля регистрационной записи.

4.Какая операционная система Вас обслуживает и какой shell?

5.Что такое среда пользователя? Как она формируется?

6.В чем отличие в диалоге прямыми сообщениями и почтовы-

ми?

7.Определите возможности электронной почты. Какие режимы работы электронной почты Вы знаете?

8.Какое назначение числовых идентификаторов пользователей и групп в работе UNIX?

78

Работа 2. УПРАВЛЕНИЕ КАТАЛОГАМИ

Посвящена изучению структуры файловой системы и возможностей командного языка UNIX по управлению каталогами.

Изучаются команды:

mkdir, rmdir — для создания и уничтожения каталогов; ls — вывод листинга каталога;

pwd — вывод на экран полного имени текущего каталога; cd — смена текущего каталога;

find, grep — поиск файлов в системе каталогов; >маршрутное-имя-файла — создание пустого файла.

МЕТОДИКА ВЫПОЛНЕНИЯ

1.Определите уникальное имя Вашего головного личного каталога. Объясните структуру полного маршрутного имени каталога.

2.Создайте два поддерева из одного и двух каталогов.

3.С использованием команды ls проверьте факт построения дерева подкаталогов.

4.Просмотрите содержимое пустых подкаталогов, т.е. новых подкаталогов, не содержащих файлов. Объясните их содержание.

5.Сделайте текущим последний каталог меньшего поддерева.

6.Определите его полное маршрутное имя.

7.Смените текущий каталог на подкаталог большего поддерева.

8.Определите его полное маршрутное имя.

9.Поместите в созданные подкаталоги по 2-3 пустых файла не выходя из текущего. Используйте при этом разные способы задания маршрутного имени подкаталогов.

10.Просмотрите содержимое каталогов. Объясните содержание каждого поля каталогов.

11.Установите в качестве текущего HOME-каталог.

12.Найдите обычные файлы с определением их полных маршрутных имен. Выполните то же для различных комбинаций известных Вам условий поиска файлов.

13.Проделайте предыдущее задание для файлов типа каталог.

14.Выведите на экран принадлежащую Вам регистрационную запись с использованием команды grep.

15.Уничтожьте все построенные Вами подкаталоги. Получите подтверждение выполнения команд по содержимому домашнего каталога.

16.Проанализируйте с использованием команды history содержание лабораторной работы, продумайте ответы на нижеприведенные контрольные вопросы.

79

Контрольные вопросы

1.Какие системные имена каталогов Вам известны?

2.Каким образом можно построить отдельный каталог или цепочку каталогов?

3.Для чего и каким образом переопределяются текущие ката-

логи?

4.Как обратиться к файлам параллельных ветвей дерева каталогов? К вышележащему каталогу?

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

6.Какова последовательность действий при удалении одного каталога? Цепочки каталогов?

7.Объясните назначение и содержание каждого поля каталога.

8.Как отличить по содержимому каталога типы файлов, содержащихся в Ваших каталогах?

9.Какую информацию содержит «пустой» вновь созданный каталог?

10.Как осуществить поиск файлов в системе каталогов по фрагментам текста файлов?

Работа 3. УПРАВЛЕНИЕ ФАЙЛАМИ

Посвящена изучению приемов формирования и преобразования файлов в ОС UNIX.

Изучаются команды:

cat, cp — копирование файлов;

mv — перемещение и переименование файлов; ln — организация ссылок на файл;

sort — сортировка файлов;

wc — определение числовых параметров файла; touch — обновление временных характеристик файла.

МЕТОДИКА ВЫПОЛНЕНИЯ

1.Выведите на экран содержимое Вашего HOME-каталога.

2.Создайте 3-4 текстовых файла с частично совпадающими именами. Проанализируйте значения атрибутов Ваших файлов.

3.Создайте еще один файл методом слияния из существующих. Как изменились атрибуты нового файла?

80