Забродин УНИХ основы командного интерфейса 2010
.pdfМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»
Л.Д. Забродин, В.В. Макаров, А.Б. Вавренюк
UNIX:
основы командного интерфейса и программирования (в примерах и задачах)
Под редакцией доктора технических наук, профессора Л.Д. Забродина
Рекомендовано УМО «Ядерные физика и технологии» в качестве учебного пособия
для студентов высших учебных заведений
Москва 2010
УДК 004.451.9(075) ББК 32.973-018.1я7 З-12
Забродин Л.Д., Макаров В.В., Вавренюк А.Б. UNIX: основы командного интерфейса и программирования (в примерах и задачах): Учебное пособие. / Под ред. д-ра техн. наук, проф. Л.Д. Забродина. М.: НИЯУ МИФИ, 2010. 204 с.
Рассматриваются основы командного языка мобильных UNIXподобных операционных систем (ОС) и основы программирования процедур на языке оболочки Korn-shell. Операционные системы семейства UNIX (Linux, Sysyem V, AIX, MCBC и др.) объединяют единые стандарты как на структуры алгоритмов и управляющих данных, так и на внешние интерфейсы для пользователей. Изучаются возможности ОС UNIX по управлению и защите файлов, по управлению процессами, по управлению
иэкспортированию переменных, программированию процедур проверки условий и организации циклов. Изучение базируется на большом количестве примеров и задач. Особое место отводится контрольным вопросам и тестированию.
Пособие предназначено для использования в вузах, колледжах, лицеях
ина курсах повышения квалификации, а также для самостоятельного изучения ОС UNIX.
Подготовленов рамках Программы создания иразвития НИЯУ МИФИ. Рецензент доц. каф. ИС, канд. техн. наук О.А. Мирзеабасов
ISBN 978-5-7262-1253-1
Национальный исследовательский ядерный университет «МИФИ», 2010
Редактор Н.В. Шумакова Оригинал-макет изготовлен Е.Е. Шумаковой
Подписано в печать 10.12.2009. Формат 60х84 1/16. Печ.л. 12,75. Уч.-изд. л. 12,75. Тираж 400 экз.
Изд. № 1/4/44 Заказ № 29 Национальный исследовательский ядерный университет «МИФИ».
115409, Москва, Каширское ш., д. 31.
ООО «Полиграфический комплекс «Курчатовский». 144000, Московская область, г. Электросталь, ул. Красная, д. 42
О Г Л А В Л Е Н И Е |
|
ПРЕДИСЛОВИЕ.................................................................................. |
6 |
1. ВВЕДЕНИЕ..................................................................................... |
10 |
1.1. ИСТОРИЧЕСКИЙ АСПЕКТ UNIX.................................................. |
10 |
1.2. РЕЖИМЫ РАБОТЫ ОС.................................................................... |
12 |
1.3. ВИДЫ ИНТЕРФЕЙСОВ ПОЛЬЗОВАТЕЛЯ ОС UNIX.................. |
13 |
1.4. ОСНОВНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ ОС............................. |
14 |
Вопросы для самоконтроля................................................................. |
17 |
2. ЗНАКОМСТВО ПОСЛЕ ИНСТАЛЛЯЦИИ............................. |
18 |
2.1. СОСТАВ ОС UNIX............................................................................ |
18 |
2.2. СРЕДА ДЛЯ РАБОТЫ ПОЛЬЗОВАТЕЛЯ...................................... |
22 |
2.3. РЕГИСТРАЦИЯ ПОЛЬЗОВАТЕЛЯ В СИСТЕМЕ......................... |
24 |
2.4. ГРУППА КОММУНИКАЦИОННЫХ КОМАНД........................... |
26 |
2.5. ГРУППА ВСПОМОГАТЕЛЬНЫХ КОМАНД................................ |
29 |
2.6. ПЕРЕНАПРАВЛЕНИЕ ВВОДА-ВЫВОДА .................................... |
30 |
Вопросы для самоконтроля................................................................. |
31 |
3. ФАЙЛОВАЯ СИСТЕМА UNIX................................................... |
32 |
3.1. ФАЙЛЫ UNIX ................................................................................... |
32 |
3.2. ГЕНЕРАЦИЯ ИМЕН ФАЙЛОВ....................................................... |
34 |
3.3. СТРУКТУРА СИСТЕМЫ КАТАЛОГОВ UNIX ............................. |
35 |
3.4. УПРАВЛЕНИЕ КАТАЛОГАМИ В UNIX ....................................... |
36 |
3.5. КОМАНДЫ ПОИСКА ФАЙЛОВ В СИСТЕМЕ КАТАЛОГОВ.... |
41 |
3.6. УПРАВЛЕНИЕ ФАЙЛАМИ............................................................. |
44 |
3.7. УПРАВЛЕНИЕ ПРАВАМИ ДОСТУПА К ФАЙЛАМ |
51 |
И КАТАЛОГАМ.................................................................................. |
|
Вопросы для самоконтроля................................................................. |
58 |
4. КОНВЕЙЕРЫ И ФИЛЬТРЫ....................................................... |
60 |
Вопросы для самоконтроля................................................................. |
63 |
5. ПРОЦЕССЫ В UNIX..................................................................... |
64 |
5.1. УПРАВЛЕНИЕ ПРОЦЕССАМИ...................................................... |
64 |
5.2. СОЗДАНИЕ ФОНОВЫХ ПРОЦЕССОВ......................................... |
69 |
5.3. УПРАВЛЕНИЕ ПРИОРИТЕТАМИ ПРОЦЕССОВ........................ |
73 |
5.4. ЗАВЕРШЕНИЕ ПРОЦЕССОВ ......................................................... |
74 |
5.5. ПЕРЕХВАТЫВАНИЕ СИГНАЛОВ................................................. |
75 |
Вопросы для самоконтроля................................................................. |
76 |
3 |
|
6. ПРАКТИКУМ ДЛЯ САМОСТОЯТЕЛЬНОГО |
|
ОСВОЕНИЯ КОМАНД.................................................................. |
77 |
Работа 1. ЗНАКОМСТВО С ОС UNIX ................................................... |
77 |
Работа 2. УПРАВЛЕНИЕ КАТАЛОГАМИ............................................ |
79 |
Работа 3. УПРАВЛЕНИЕ ФАЙЛАМИ................................................... |
80 |
Работа 4. УПРАВЛЕНИЕ ПРАВАМИ ДОСТУПА К ФАЙЛАМ |
82 |
И КАТАЛОГАМ ...................................................................... |
|
Работа 5. УПРАВЛЕНИЕ ПРОЦЕССАМИ............................................ |
84 |
7. ВВЕДЕНИЕ В SHELLПРОГРАММИРОВАНИЕ. |
|
ПЕРЕМЕННЫЕ SHELL ................................................................... |
86 |
7.1. ПОНЯТИЕ ПРОЦЕДУР.................................................................... |
86 |
7.2. УПРАВЛЕНИЕ ЛОКАЛЬНЫМИ ПЕРЕМЕННЫМИ.................... |
91 |
7.3. ПОДСТАНОВКА ЗНАЧЕНИЙ ПЕРЕМЕННЫХ............................ |
92 |
7.4. ЭКСПОРТИРОВАНИЕ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ.............. |
97 |
Вопросы для самоконтроля............................................................... |
100 |
8. ВВЕДЕНИЕ В SHELLПРОГРАММИРОВАНИЕ. |
|
АЛГОРИТМЫ ПРОЦЕДУР........................................................... |
101 |
8.1. ПРОВЕРКА УСЛОВИЙ.................................................................. |
101 |
8.2. ВЕТВЛЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ................... |
104 |
8.3. ПОСТРОЕНИЕ ЦИКЛОВ............................................................... |
106 |
Вопросы для самоконтроля............................................................... |
113 |
9. СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ТЕКСТОВЫХ |
|
ФАЙЛОВ И ПРОЦЕДУР................................................................ |
114 |
9.1. КОМАНДЫ И РЕЖИМЫ РАБОТЫ С РЕДАКТОРОМ VI.......... |
114 |
9.2. УПРАЖНЕНИЯ ДЛЯ ПРАКТИЧЕСКОГО ОСВОЕНИЯ |
118 |
РЕДАКТОРА..................................................................................... |
|
Вопросы для самоконтроля............................................................... |
119 |
10. ПРИМЕРЫ SHELLПРОГРАММИРОВАНИЯ.................. |
120 |
10.1. ПЕРЕДАЧА ПАРАМЕТРОВ В ПРОЦЕДУРУ............................ |
120 |
10.2. РАБОТА С ФАЙЛАМИ................................................................ |
122 |
10.3. РАБОТА С СИМВОЛЬНЫМИ СТРОКАМИ.............................. |
124 |
10.4. ВЫЧИСЛЕНИЕ АРИФМЕТИЧЕСКИХ |
127 |
ВЫРАЖЕНИЙ ........................................................................................ |
|
10.5. ИСПОЛЬЗОВАНИЕ КОНВЕЙЕРОВ........................................... |
129 |
10.6. ВЕТВЛЕНИЕ В ПРОЦЕДУРАХ................................................... |
130 |
10.7. ЦИКЛЫ В ПРОЦЕДУРАХ ........................................................... |
135 |
10.8. ПРОЦЕДУРЫ С ИСПОЛЬЗОВАНИЕМ ТАЙМЕРА.................. |
140 |
4 |
|
11. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО |
|
ПРОГРАММИРОВАНИЯ ПРОЦЕДУР.................................. |
144 |
12. CЕТЕВЫЕ СРЕДСТВА UNIX.................................................. |
147 |
12.1. СТЕК ПРОТОКОЛОВ TCP/IP ...................................................... |
149 |
12.2. ПРОТОКОЛ IP ............................................................................... |
150 |
12.3. ПРОТОКОЛ TCP............................................................................ |
151 |
12.4. ПРОТОКОЛ UDP........................................................................... |
152 |
Вопросы для самоконтроля............................................................... |
153 |
13. ИНСТАЛЛЯЦИЯ. ОСНОВНЫЕ ПРАКТИЧЕСКИЕ |
|
ПРИЁМЫ ..................................................................................... |
154 |
13.1. УСТАНОВКА ОС UNIX ............................................................... |
154 |
13.2. СОЗДАНИЕ ДИСТРИБУТИВНОГО ДИСКА............................. |
154 |
13.3. ПОДГОТОВКА ЖЕСТКОГО ДИСКА......................................... |
155 |
13.4. ЗАГРУЗКА С УСТАНОВОЧНОГО ДИСКА............................... |
157 |
13.5. СОЗДАНИЕ ДИСКОВЫХ РАЗДЕЛОВ....................................... |
157 |
13.6. ПРОЦЕДУРА УСТАНОВКИ........................................................ |
161 |
Вопросы для самоконтроля............................................................... |
167 |
14. ТЕСТ ДЛЯ ИТОГОВОЙ ПРОВЕРКИ ПОЛНОТЫ |
|
УСВОЕНИЯ УЧЕБНОГО МАТЕРИАЛА.............................. |
168 |
Список рекомендуемой литературы................................................. |
182 |
Приложение 1. Краткий справочник команд UNIX ...................... |
183 |
Приложение 2. Перечень правильных ответов |
|
на тестовые вопросы (раздел 14) ............................ |
204 |
5
ПРЕДИСЛОВИЕ
Настоящее учебное пособие посвящено изучению командного интерфейса операционных систем семейства UNIX, получивших распространение во всем мире с начала 1970-х годов (компания AT&T). Знание именно интерфейсов из широчайшего круга вопросов проблематики UNIX определяет возможность работы практически с любой операционной системой семейства UNIX (ОС UNIX), установленной на компьютер любой архитектуры. Все операционные системы этого семейства объединяют единые стандарты как на структуры алгоритмов и управляющих данных, так и на внешние интерфейсы пользователей различного уровня – массового конечного пользователя в офисах, прикладного программиста, системного программиста, системного администратора.
Во всем многообразии версий и реализаций UNIX-подобных ОС особое место занимает операционная система Linux (1991 г), ставшая фактически основой для развития актуального современного направления развития универсальных мобильных операционных систем. С момента своего появления ОС Linux была объявлена свободно распространяемым программным продуктом (Free Software) с открытым исходным кодом (Open Source Software). Доступный исходный код позволяет анализировать, редактировать тексты и дополнять библиотеки программных модулей в составе ОС, адаптируя их к условиям конкретного применения системы. При этом существенно сокращаются трудозатраты по сравнению с выполнением таких работ для традиционных закрытых систем, например для программных продуктов Microsoft.
Востребованность СПО в современных IT-технологиях подтверждается тем, что появились и успешно развиваются ряд таких проектов , как например, FEDORA компании Red Hat, OPEN SUSE компании Novell и др.. Аналогичный проект под названием Russian Fedora развивается и в России. Также следует отметить, что и другие ОС семейства UNIX пошли по пути создания ОС с открытым кодом (OpenBSD, FreeBSD, NetBSD). Свободные программные продукты доступны для широкого использования в основном безвозмездно и без ограничений.
Своими свойствами СПО обязано не в последнюю очередь международным стандартам на программные продукты. В частности, действующие международные комитеты по стандартам Posix рег-
6
ламентируют стандарты на программные интерфейсы СПО всех уровней — систем программирования, сопряжения с устройствами, на командный язык открытых операционных систем СПО. Благодаря этому практически все UNIX-подобные ОС совместимы на уровне командного языка, что безусловно упрощает осваивание ОС на уровне массовых пользователей, а также обеспечивает высокую мобильность операционных систем.
В России UNIX-подобные операционные системы благодаря свойствам СПО нашли широкое распространение. Достаточно сказать, что Linux в программах развития РОСАТОМ объявлена базовой операционной системой для автоматизированных систем управления и контроля в ядерной энергетической отрасли. Благодаря встроенным собственным программным сетевым средствам UNIX – основа программного обеспечения компьютерных сетей всех уровней, включая и Internet. Кроме того, Linux послужила прототипом базовой мобильной ОС Вооруженных сил РФ — МСВС. Свободное ПО или ПО с открытым кодом применяется также в структурах Минобразования и науки, в некоторых госструктурах наряду с традиционными продуктами фирмы Microsoft. Президент РФ Д.А. Медведев на совещании с ведущими российскими разработчиками СПО заявил, что российские школы будут снабжены свободными операционными системами и пакетами(офисные приложения, средства разработки и редактирования, компьютерная графика и пр.). Если программа хорошо покажет себя в школах, СПО будет шире внедряться в госорганах и в бюджетных учреждениях. В связи с этим изучение ОС Unix становится актуальнейшей задачей государственного значения.
Учебное пособие не ставит целью изучить конкретную операционную систему, одну из нескольких сотен известных ОС, построенных на стандартах UNIX. Скорее — изучить функциональные возможности, которые имеются в абсолютном большинстве операционных систем семейства UNIX и их версий. Тем самым обеспечивается возможность учащемуся адаптироваться и начать практическую работу в среде любой UNIX-подобной операционной системы. Безусловно, наиболее полное освоение и использование возможностей ОС UNIX может быть достигнуто только в процессе реальной практической работы. Именно поэтому ниже при изложении учебного материала мы будем использовать термины “операционная система семейства UNIX” или “ОС UNIX” или просто
7
“UNIX”, что является синонимом инвариантных стандартных интерфейсных средств UNIX.
Операционные системы семейства UNIX благодаря своим свойствам заняли де-факто главенствующее положение среди операционных систем широкого назначения. В настоящее время по тематике ОС UNIX опубликовано на бумажных носителях и в Интернете много материалов, но все они имеют справочный характер и расcчитаны прежде всего на подготовленного пользователя, имеющего хотя бы небольшой опыт работы с ОС UNIX. Вместе с тем, отсутствуют издания, направленные на систематическое изучение основ ОС UNIX, методическое изложение которых ориентировалось бы на учащегося – студента колледжа или вуза, желающего освоить ОС UNIX и использовать ее для решения прикладных задач. Изучение операционной системы UNIX предусматривается всеми типовыми учебными программами профильных учебных заведений. Тем более, что ОС UNIX – основа самых распространенных программных сетевых средств — Internet.
Предлагаемые в пособии упражнения могут быть выполнены в среде любой доступной UNIX-подобной операционной системы (System Y, AIX, Linux и др.), в том числе и в многотерминальном режиме. В качестве базовой оболочки принят Korn-shell. Команды этой оболочки входят в стандарт Posix.
Авторы преследовали цель изложить фактический материал по методике, позволяющей как можно раньше почувствовать особенности ОС UNIX, ее важнейшие свойства и широкие возможности с одновременным постепенным “погружением” в некоторые тонкости и сложности UNIX.
Учебное пособие не претендует на полный учебник, а ориентировано только на получение базовых практических сведений. Прежде всего, оно ориентировано на изучение командного языка и основ программирования в среде ОС UNIX на языке shell, как основы практических знаний для осваивания конкретной операционной системы на уровне «конечных пользователей» и «прикладных программистов». Два раздела книги содержат начальные сведения по установке ОС на компьютере и обзор собственных сетевых средств UNIX. Эта информация позволяет получить начальные предстваления о системах UNIX именно как о собственно сетевых операционных системах. В то же время в книге не затрагивается программный интерфейс (системные вызовы), предназначенный
8
для непосредственного управления ресурсами вычислительной системы из тела системной программы. Это прерогатива «системных программистов». Не рассматриваются различные надстройки над операционными системами (графические, X-Window, сетевые, системы программирования на алгоритмических языках и пр.).
Учебное пособие может быть рекомендовано студентам младших курсов, а также может быть использовано для обучения персонала автоматизированных систем управления и обработки информации, для слушателей курсов переподготовки и повышения квалификации сотрудников РОСАТОМ, для продвинутых учащихся лицеев и колледжей НИЯУ МИФИ.
В качестве учебного пособия книга отвечает требованиям учебных программ и компетенций по целому ряду направлений подготовки в соответствии с перечнем направлений высшего профессионального образования РФ ГОС-3:
«Ядерная физика и технологии» (140300); «Информатика и вычислительная техника» (230100);
«Автоматизация технологических процессов и произ-
водств» (220300)
и ряду других, где изучаются современные средства вычислительной техники.
Материал книги базируется на нескольких учебных курсах, прочитанных на кафедре «Компьютерные системы и технологии» НИЯУ МИФИ в 2003 — 2009 гг. Разделы 10, 11 написаны канд. техн. наук, доцентом В.В. Макаровым; разделы 12, 13 — канд. техн. наук, доцентом А.Б. Вавренюком; раздел 14 — совместно; остальные разделы учебного пособия написаны д-ром техн. наук, профессором Л.Д. Забродиным.
Д-р техн. наук, проф. Л.Д. Забродин
9
1.ВВЕДЕНИЕ
1.1.ИСТОРИЧЕСКИЙ АСПЕКТ UNIX
Операционные системы являются обязательной составной частью любой вычислительной системы. Под вычислительной системой (ВС) далее будем понимать любую ассоциацию процессоров, способных выполнять некоторую вычислительную работу. Даже простейший персональный компьютер представляет собой многопроцессорную систему. Обычно кроме основного центрального процессора ПЕВМ включает сопроцессоры для ускорения операций определенного вида (с плавающей запятой), для выполнения операций ввод-вывода и пр. Развитием простейших ассоциаций являются многопроцессорные параллельные вычислительные системы, многомашинные комплексы и компьютерные сети. Операционная система в любой ВС выполняет функции организации вычислительного процесса. Без ОС любая ВС мертва, это просто «железо». ОС — это самая инвариантная часть ВС. Операционная система (ОС) – это комплекс программ, который обеспечивает управление всеми аппаратными, программными средствами и всеми данными ВС.
Далее будем использовать обобщающий синоним:
ВС = Аппаратная_платформа (АП) + Программная_платформа (ОС).
На историческом этапе развития ВС было создано и имело хождение множество операционных систем самого разного назначения и для различных архитектур ВС, и для различной схемотехнической базы (ОС для мини- и микроЭВМ реального времени, для больших ЕС ЭВМ, ЭЛЬБРУС и пр. пакетной обработки больших вычислительных заданий).
Но в последние 1.5 — 2 десятилетия превалирующее значение получили ОС, построенные на распространенных стандартах, совокупность которых представляет собой некоторую операционную систему UNIX (название произошло от UNICS – Uniplexed Information and Computing System). Решения при разработке первых версий UNIX были настолько удачны, обладали свойствами, базовыми для расширения и построения операционных систем самого различного
10