ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Г. В. Курячий
К .А. Маслинский
Б и б л и о г р . 19
С о з д а н о п р и поддержке к о м п а н и и
« И Б М Восточная Европа/Азия»
И з д а н и е осуществлено п р и ф и н а н с о в о й и т е х н и ч е с к о й поддержке к о м п а н и й :
Издательство «Открытые Системы», « Р М Телеком», Kraftway Computers и A L T Linux.
П о л н о е и л и частичное в о с п р о и з в е д е н и е и л и р а з м н о ж е н и е к а к и м - л и б о с п о с о б о м , в т о м
числе и п у б л и к а ц и я в Сети, н а с т о я щ е г о и з д а н и я допускается т о л ь к о с п и с ь м е н н о г о
р а з р е ш е н и я И н т е р н е т - У н и в е р с и т е т а И н ф о р м а ц и о н н ы х Технологий.
ISBN 5-9556-0029-9
О проекте
Анатолий Шкред
anatoli@shkred.ru
3
Предисловие
4
Об авторах
5
Лекции
6
Содержание
7
Обработка данных в потоке 117
П р и м е р ы задач 121
Л е к ц и я 8. Возможности командной оболочки 129
Редактирование ввода 129
Генерация и м е н файлов 136
Окружение 140
Я з ы к программирования sh 145
Настройка командного интерпретатора 150
Л е к ц и я 9. Текстовые редакторы 154
Задача текстовых редакторов 154
V i и лучше, чем V i 156
Лучше, чем Emacs? 168
Просто текстовые редакторы 175
Л е к ц и я 10. Этапы загрузки системы 177
Досистемная загрузка 177
Загрузка систетемы 188
Останов системы 201
Л е к ц и я 11. Работа с в н е ш н и м и устройствами 204
Представление устройства в системе 204
Разметка диска и именование устройств 211
Файловая система 215
Л е к ц и я 12. К о н ф и г у р а ц и о н н ы е ф а й л ы 227
Проектирование свойств системы 227
Л е к ц и я 13. Управление пакетами 249
Пакеты 249
Зависимости 257
Установщики пакетов 260
Менеджеры пакетов 262
Контроль целостности 264
Л е к ц и я 14. Сеть T C P / I P в Linux 268
Сетевые протоколы. Семейство протоколов T C P / I P 268
Аппаратный и интерфейсный уровни 272
Сетевой уровень 274
Транспортный уровень 280
Прикладной уровень 281
8
Л е к ц и я 15. Сетевые и серверные возможности 290
Настройка сети 290
Сетевые службы 306
Л е к ц и я 16. Графический интерфейс (X11) 317
Графический интерфейс в Linux 317
X Window System 320
X-приложения 331
Л е к ц и я 17. П р и к л а д н ы е программы 346
Рабочий стол 347
Сеть 350
О ф и с н ы е программы 353
Мультимедиа 358
Издательские системы 363
Нельзя объять необъятное 364
Л е к ц и я 18. Политика свободного лицензирования.
История Linux: от ядра к дистрибутивам 365
История возникновения свободного П О 365
История Linux 378
9
Внимание!
На сайте Интернет-университета информационных
технологий Вы можете пройти тестирование по
каждой лекции и курсу в целом.
Добро пожаловать на наш сайт:
www.intuit.ru
10
Лекция 1 Сеанс работы в Linux
Пользователи системы
11
Курс Операционная система Linux
* В м е с т о ф о р м а л ь н о г о « з а р е г и с т р и р о в а т ь с я в системе» о б ы ч н о и с п о л ь з у ю т в ы р а ж е н и е
« в о й т и в систему». О п е р а ц и о н н а я с и с т е м а п р е д с т а в л я е т с я ч е м - т о вроде з а м к н у т о г о п о м е
щ е н и я , в н у т р и к о т о р о г о м о ж н о о к а з а т ь с я , т о л ь к о у с п е ш н о п р о н и к н у в через «дверь» —
пройдя процедуру регистрации.
12
Лекция 1 Сеанс работы в Linux
13
Курс Операционная система Linux
Учетные записи
Идентификатор пользователя
* Э т о м о ж е т о к а з а т ь с я в а ж н ы м , н а п р и м е р , в т а к о й с и т у а ц и и : учетную з а п и с ь п о л ь з о в а т е
л я с и м е н е м test у д а л и л и и з с и с т е м ы , а п о т о м д о б а в и л и с н о в а . О д н а к о с т о ч к и з р е н и я с и
с т е м ы э т о уже другой п о л ь з о в а т е л ь , п о т о м у ч т о у н е г о д р у г о й U I D .
14
Лекция 1 Сеанс работы в Linux
Идентификатор группы
Полное имя
Домашний каталог
15
Курс Операционная система Linux
Командная оболочка
Понятие «администратор»
16
Лекция 1 Сеанс работы в Linux
Регистрация в системе
localhost login:
* Р а з н о о б р а з и е г р а ф и ч е с к и х и н т е р ф е й с о в L i n u x г о р а з д о в ы ш е , ч е м , н а п р и м е р , в Windows,
п о э т о м у составить у ч е б н ы й к у р с , н е о р и е н т и р у я с ь с п е ц и а л ь н о н а ту и л и и н у ю в е р с и ю ,
просто невозможно.
17
Курс Операционная система Linux
Password:
Login incorrect
login:
login: methody
Password:
[methody@localhost methody]$
18
Лекция 1 Сеанс работы в Linux
Идентификация (authentication)
Когда система выводит на э к р а н приглашение командной строки
после правильного введения и м е н и пользователя и пароля, это означает,
что произошла идентификация пользователя (authentication, «проверка
подлинности»). Пароль может показаться и з л и ш н е с л о ж н ы м , н о у систе
м ы нет другого способа удостовериться, что за монитором находится
и м е н н о тот человек, который имеет право на использование д а н н о й учет¬
н о й записи.
Конечно, процедура идентификации имеет очевидное значение для
систем, к которым имеют непосредственный или сетевой доступ многие
не связанные друг с другом пользователи. Процедура идентификации га¬
рантирует, что к такой системе н е получит доступ случайный человек, не
и м е ю щ и й права использовать ее ресурсы и хранящуюся в ней информа¬
цию. Одновременно она дает определенную гарантию защиты от злонаме¬
ренного вмешательства: даже если навредить попытается пользователь,
и м е ю щ и й учетную запись, его действия будут зарегистрированы в системе
(поскольку системе всегда известно, от имени какой учетной записи вы¬
полняются те или иные действия), и злоумышленника можно будет найти.
Для тех пользователей, которым процедура идентификации кажется
утомительной и необязательной (например, единственным пользовате
лям персональных компьютеров), существует возможность получить д о
ступ к системе, минуя процедуру идентификации. Д л я этого применяется
программа a u t o l o g i n . Она предоставляет доступ к работе с графичес
к и м интерфейсом сразу после загрузки системы, н е запрашивая и м я
пользователя и пароль. В действительности, a u t o l o g i n запускает все
программы от и м е н и одного пользователя, зарегистрированного в систе¬
ме. Н а п р и м е р , М е ф о д и й мог бы использовать свою учетную запись
m e t h o d y для автоматического входа в систему. Однако у этого подхода
есть свои минусы:
19
Курс Операционная система Linux
Смена пароля
[ m e t h o d y @ l o c a l h o s t methody]$ passwd
C h a n g i n g password f o r methody.
20
Лекция 1 Сеанс работы в Linux
password c o n t a i n i n g c h a r a c t e r s f r o m a l l t h e c l a s s e s . An u p p e r c a s e let¬
c o n t a i n enough d i f f e r e n t characters.
this as y o u r p a s s w o r d : "spinal&state:buy".
length.
Try again.
21
Курс Операционная система Linux
E n t e r new password:
R e - t y p e new password:
[methody@localhost methody]$
22
Лекция 1 Сеанс работы в Linux
Виртуальные консоли
localhost l o g i n : methody
Password:
[methody@localhost methody]$
23
Курс Операционная система Linux
Графические консоли
24
Лекция 1 Сеанс работы в Linux
Простейшие команды
[ m e t h o d y @ l o c a l h o s t methody]$ whoami
methody
[methody@localhost methody]$
25
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ who
[methody@localhost methody]$
[ m e t h o d y @ l o c a l h o s t methody]$ who am i
[methody@localhost methody]$
26
Лекция 1 Сеанс работы в Linux
[ m e t h o d y @ l o c a l h o s t methody]$ last
Выход из системы
В строках, выведенных программой l a s t , указан не только момент
регистрации пользователя в системе, но и момент завершения работы.
М о ж н о представить Linux как закрытое помещение: чтобы начать работу,
нужно сначала войти в систему (зарегистрироваться, пройти процедуру
и д е н т и ф и к а ц и и ) , а когда работа закончена, следует из системы выйти. В
том случае, если в систему вошло несколько пользователей, каждый из
них должен выйти, завершив работу, причем не имеет значения, разные
это пользователи или «копии» одного и того же.
Вход пользователя в систему означает, что нужно принимать и в ы
полнять его команды и возвращать ему отчеты о выполненных действиях,
например, предоставив ему интерфейс командной строки. Выход означа¬
ет, что работа от имени данного пользователя завершена и более не следу
ет принимать от него команды. Весь процесс взаимодействия пользовате
ля с системой от момента регистрации до выхода называется сеансом ра
боты. Причем если пользователь входит в систему несколько раз под од
н и м и тем ж е именем, ему будут доступны несколько разных сеансов ра
боты, не связанных между собой.
27
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ logout
localhost login:
28
Лекция 2 Терминал и командная строка
Терминал
[ m e t h o d y @ l o c a l h o s t methody]$ data
[ m e t h o d y @ l o c a l h o s t methody]$ date
Пример 2.1. С о о б щ е н и е об о ш и б к е
29
Курс Операционная система Linux
терминал
Устройство последовательного ввода и вывода символьной ин¬
ф о р м а ц и и , способное воспринимать часть символов как управ¬
л я ю щ и е для редактирования ввода, сигналов и т. п. Использует
ся для взаимодействия пользователя и системы.
30
Лекция 2 Терминал и командная строка
[ m e t h o d y @ l o c a l h o s t methody]$ c a t
Any Text
Any Text
A
C
[ m e t h o d y @ l o c a l h o s t methody]$ c a t
A
Any Text agaim [[Dn
[methody@localhost methody]$
31
Курс Операционная система Linux
32
Лекция 2 Терминал и командная строка
Текст, Текст,
управляющие символы управляющие символы
Текст Текст,
управляющие
последовательности
Командная строка
33
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ c a l
Сентября 2 004
Вс Пн Вт Ср Чт Пт Сб
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Hello, world!
Пример 2.3. К о м а н д ы e c h o и c a l
[ m e t h o d y @ l o c a l h o s t methody]$ c a l 3 2005
Марта 2005
Вс Пн Вт Ср Чт Пт Сб
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Подсистема помощи
П о к а же М е ф о д и й р е ш и л , что узнал о командной строке достаточно
для того, чтобы воспользоваться главными командами Linux (по частоте
их употребления при изучении системы) — man и i n f o .
Работать с Linux, не заглядывая в документацию, практически н е
возможно. На это способны только седые аксакалы, у которых все нуж-
34
Лекция 2 Терминал и командная строка
[ m e t h o d y @ l o c a l h o s t methody]$ man c a l
CAL(1)
NAME
SYNOPSIS
DESCRIPTION
specified, t h e c u r r e n t month i s d i s p l a y e d .
The o p t i o n s a r e as f o l l o w s :
35
Курс Операционная система Linux
Enter или стрелку вниз, а на одну строку назад — стрелку вверх. Переход
на начало и конец текста выполняется по командам " g " и "G" соответст
венно (Go). П о л н ы й список того, что м о ж н о делать с текстом в l e s s , в ы
водится по команде "H" (Help).
Страница руководства состоит и з полей — стандартных разделов, с
разных сторон описывающих заинтересовавший М е ф о д и я объект — к о
манду c a l . В поле NAME содержится краткое описание объекта (такое,
чтобы его назначение было п о н я т н о с первого взгляда). В поле SYNOPSIS
дается формализованное описание способов использования объекта (в
д а н н о м случае — того, к а к и с к а к и м и параметрами запускать команду
c a l ) . К а к правило, в квадратные скобки в этом поле заключены необяза
тельные параметры команды, которые м о ж н о ей передать, а м о ж н о и опу
стить. Н а п р и м е р , строка " [ [ m o n t h ] y e a r ] " означает, что в это месте
командной строки параметров у команды может н е быть вообще, может
быть указан год и л и пара — месяц и год. Н а к о н е ц , текст в поле DESCRIP
TION — это развернутое описание объекта, достаточное для того, чтобы
и м воспользоваться.
Одно и з самых важных полей руководства находится в к о н ц е текста.
Если в процессе чтения NAME или DESCRIPTION пользователь понимает,
что н е нашел в руководстве того, что искал, о н может захотеть посмот¬
реть, а есть л и другие руководства и л и и н ы е источники и н ф о р м а ц и и по
той же теме. С п и с о к таких источников содержится в поле SEE ALSO:
SEE ALSO
36
Лекция 2 Терминал и командная строка
[ m e t h o d y @ l o c a l h o s t methody]$ w h a t i s apropos
apropos (1) - s e a r c h t h e w h a t i s d a t a b a s e f o r s t r i n g s
[ m e t h o d y @ l o c a l h o s t methody]$ man a p r o p o s
apropos(1) apropos(1)
NAME
[ m e t h o d y @ l o c a l h o s t methody]$ w h a t i s passwd
О п и с а н и я объектов, в ы в о д и м ы е w h a t i s , отличаются ч и с л о м в
скобках — номером раздела. В системе руководств Linux — девять разде¬
лов, каждый из которых содержит страницы руководства к объектам оп¬
ределенного типа. Все разделы содержат по одному руководству с именем
«intro», в котором в общем виде и на примерах рассказано, какое объекты
имеют о т н о ш е н и е к данному разделу:
37
Курс Операционная система Linux
38
Лекция 2 Терминал и командная строка
Info
Другой источник и н ф о р м а ц и и о Linux и составляющих его програм
мах — справочная подсистема i n f o . Страница руководства, несмотря на
обилие ссылок различного типа, остается «линейным» текстом, структури¬
р о в а н н ы м только логически. Документ i n f o структурирован прежде все¬
го топологически — это настоящий гипертекст, в котором множество н е
больших страниц объединены в дерево. В каждом разделе документа
i n f o всегда есть оглавление, и з которого м о ж н о перейти сразу к нужно¬
му подразделу, откуда всегда м о ж н о вернуться обратно. К р о м е того, info-
документ м о ж н о читать и к а к непрерывный текст, поэтому в каждом под¬
разделе есть ссылки на предыдущий и последующий подразделы:
[ m e t h o d y @ l o c a l h o s t methody]$ i n f o info
Info: An I n t r o d u c t i o n
* Menu:
--zz-Info: ( i n f o . i n f o . b z 2 ) T o p , строк: 24 - - A l l
39
Курс Операционная система Linux
Quitting Info
40
Лекция 2 Терминал и командная строка
RTFM
41
Курс Операционная система Linux
Ключи
[ m e t h o d y @ l o c a l h o s t methody]$ date
42
Лекция 2 Терминал и командная строка
[ m e t h o d y @ l o c a l h o s t methody]$ d a t e -u
Однобуквенные ключи
[ m e t h o d y @ l o c a l h o s t methody]$ who -m
[ m e t h o d y @ l o c a l h o s t methody]$ c a l -m
Сентября 2 004
Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Для who ключ " -m" означает «Me», то есть «Я», и в результате who рабо
тает похоже на whoami*. А для c a l ключ " -m" — это команда выдать кален
дарь, считая первым днем понедельник («Monday»), как это принято в России.
* К с т а т и , с н е з а п а м я т н ы х в р е м е н who п о д д е р ж и в а е т о д и н нестандартный набор парамет
ров: who am i делает то ж е , ч т о и who -m.
43
Курс Операционная система Linux
Cross -o t e x t
info: Завершено.
[ m e t h o d y @ l o c a l h o s t methody]$ c a t t e x t -n
* С т р а н н о е с л о в о «нода» М е ф о д и й р е ш и л о с т а в и т ь н а с о в е с т и н е и з в е с т н о г о п е р е в о д ч и к а
сообщений info.
** Т о ч н е е , н а стандартный вывод, с м . л е к ц и ю 6.
44
Лекция 2 Терминал и командная строка
[ m e t h o d y @ l o c a l h o s t methody]$ i n f o -o - f i l e n a m e - w i t h -
info: Завершено.
[ m e t h o d y @ l o c a l h o s t methody]$ head -1 - f i l e n a m e - w i t h -
[ m e t h o d y @ l o c a l h o s t methody]$ head -1 -- - f i l e n a m e - w i t h -
Полнословные ключи
name.
45
Курс Операционная система Linux
именами файлов
именами файлов
Пример 2.17. К л ю ч — h e l p
46
Лекция 2 Терминал и командная строка
47
Курс Операционная система Linux
Сигналы Передача
сигналов
tty sh
Запуск
утилит
Linux
Команды и утилиты
[methody@localhost methody]$ apropos s
. . . (четыре с половиной тысячи строк!)
48
Лекция 2 Терминал и командная строка
[ m e t h o d y @ l o c a l h o s t methody]$ t y p e info
info is /usr/bin/info
[ m e t h o d y @ l o c a l h o s t methody]$ t y p e echo
echo i s a s h e l l b u i l t i n
[ m e t h o d y @ l o c a l h o s t methody]$ t y p e - a echo
echo i s a s h e l l b u i l t i n
echo i s / b i n / e c h o
[ m e t h o d y @ l o c a l h o s t methody]$ t y p e - a - t echo
builtin
file
[ m e t h o d y @ l o c a l h o s t methody]$ t y p e - a - t d a t e
file
[ m e t h o d y @ l o c a l h o s t methody]$ t y p e - a t c a t
file
Слова и разделители
49
Курс Операционная система Linux
>
One
А, кавычки забыл!
[methody@localhost methody]$
50
Лекция 3 Структура файловой системы
Файл
51
Курс Операционная система Linux
файл
Отдельная область данных на одном из носителей и н ф о р м а
ц и и , у которой есть собственное имя.
файловая система
Способ хранения и организации доступа к д а н н ы м на и н ф о р
м а ц и о н н о м носителе или его разделе. Классическая файловая
система имеет иерархическую структуру, в которой файл одно¬
значно определяется п о л н ы м путем к нему.
52
Лекция 3 Структура файловой системы
Допустимые имена
53
Курс Операционная система Linux
54
Лекция 3 Структура файловой системы
Расширения
55
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ f i l e -f ilename-with-
- f i l e n a m e - w i t h - : ASCII E n g l i s h text
[ m e t h o d y @ l o c a l h o s t methody]$ f i l e /home/methody
/home/methody: directory
Дерево каталогов
56
Лекция 3 Структура файловой системы
/
1
1 1 1 1 1
bin home usr var ...
1 1
1 1 1 1
etc doc
1 1
...
shogun methody bin
.1 1 .
1
-filename-with- text
57
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ l s /
[methody@localhost methody]$
58
Лекция 3 Структура файловой системы
59
Курс Операционная система Linux
60
Лекция 3 Структура файловой системы
* К р а т к о е о п и с а н и е с т а н д а р т н о й и е р а р х и и к а т а л о г о в L i n u x м о ж н о п о л у ч и т ь , отдав к о м а н
ду man h i e r . П о л н ы й текст и п о с л е д н ю ю р е д а к ц и ю с т а н д а р т а F H S м о ж н о п р о ч е с т ь п о
адресу http://www.pathname.com/fhs/.
61
Курс Операционная система Linux
62
Лекция 4 Работа с файловой системой
Текущий каталог
[ m e t h o d y @ l o c a l h o s t methody]$ pwd
/home/methody
[methody@localhost methody]$
63
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ c a t t e x t
[ m e t h o d y @ l o c a l h o s t methody]$ c a t /home/methody/text
* В о о б щ е г о в о р я , в н е с к о л ь к и х р а з н ы х каталогах ф а й л о в о й с и с т е м ы могут о к а з а т ь с я ф а й
л ы с и м е н е м " t e x t " . И м е н н о п о э т о м у к о м а н д н а я о б о л о ч к а всегда п е р е д а е т п р о г р а м м а м
и у т и л и т а м « т о ч н ы й адрес» ф а й л а в ф а й л о в о й системе — полный путь.
64
Лекция 4 Работа с файловой системой
text
text
/home/methody
Д о м а ш н и й каталог
65
Курс Операционная система Linux
Информация о каталоге
[ m e t h o d y @ l o c a l h o s t methody]$ l s
[methody@localhost methody]$
66
Лекция 4 Работа с файловой системой
[ m e t h o d y @ l o c a l h o s t methody]$ l s -F /
[methody@localhost methody]$
[ m e t h o d y @ l o c a l h o s t methody]$ l s -aF
.rpmmacros Documents/
[methody@localhost methody]$
67
Курс Операционная система Linux
П е р е м е щ е н и е по дереву каталогов
[ m e t h o d y @ l o c a l h o s t methody]$ c d /home
[ m e t h o d y @ l o c a l h o s t home]$ l s
methody shogun
[ m e t h o d y @ l o c a l h o s t home]$ c d methody
[methody@localhost methody]$
69
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ c d ..
[ m e t h o d y @ l o c a l h o s t home]$ c d ~
[ m e t h o d y @ l o c a l h o s t methody]$ c d ~shogun
[methody@localhost shogun]$ cd
[methody@localhost methody]$
Создание каталогов
[ m e t h o d y @ l o c a l h o s t methody]$ m k d i r examples
[ m e t h o d y @ l o c a l h o s t methody]$ l s -F
[methody@localhost methody]$
70
Лекция 4 Работа с файловой системой
Копирование и п е р е м е щ е н и е файлов
[ m e t h o d y @ l o c a l h o s t methody]$ mv -- - f i l e n a m e - w i t h - examples/
[ m e t h o d y @ l o c a l h o s t methody]$ c d examples
[ m e t h o d y @ l o c a l h o s t examples]$ mv ../text .
[ m e t h o d y @ l o c a l h o s t examples]$ l s
- f i lename-wi t h - text
[methody@localhost examples]$
71
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t examples]$ cp t e x t text.bak
[ m e t h o d y @ l o c a l h o s t examples]$ l s
Жесткие ссылки
Каждый файл представляет собой область данных на жестком диске
компьютера или на другом носителе и н ф о р м а ц и и , которую м о ж н о найти
72
Лекция 4 Работа с файловой системой
[ m e t h o d y @ l o c a l h o s t methody]$ l n e x a m p l e s / t e x t text-hardlink
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l R
./:
./examples:
итого 92
73
Курс Операционная система Linux
Индексные дескрипторы
Поскольку благодаря жестким ссылкам у файла может быть н е
сколько имен, п о н я т н о , что вся существенная и н ф о р м а ц и я о файле в
файловой системе привязана не к и м е н и . В файловых системах Linux вся
и н ф о р м а ц и я , необходимая для работы с файлом, хранится в индексном
дескрипторе. Для каждого файла существует индексный дескриптор: не
только для обычных файлов, но и для каталогов*, файлов-дырок и т. д.
Каждому файлу соответствует один индексный дескриптор.
И н д е к с н ы й дескриптор — это описание файла, в котором содержит¬
ся:
• тип файла (обычный файл, каталог, файл-дырка и т. д.);
• права доступа к файлу;
• и н ф о р м а ц и я о том, кому принадлежит файл;
• отметки о времени создания, м о д и ф и к а ц и и , последнего доступа к
файлу;
• размер файла;
• указатели на физические блоки на диске, принадлежащие этому
файлу — в этих блоках хранится «содержимое» файла.
Все индексные дескрипторы пронумерованы, поэтому номер ин¬
дексного дескриптора — это уникальный идентификатор файла в файло¬
вой системе — в отличие от имени файла (жесткой ссылки на него), кото¬
рых может быть несколько. Узнать номер индексного дескриптора любо¬
го файла м о ж н о при п о м о щ и все той же утилиты l s с ключом - i :
* К а т а л о г и в L i n u x — т о ж е ф а й л ы о с о б о г о т и п а , с м . р а з д е л « С и с т е м а ф а й л о в : каталоги».
74
Лекция 4 Работа с файловой системой
[ m e t h o d y @ l o c a l h o s t methody]$ l s - i . / t e x t - h a r d l i n k
examples/text
Символьные ссылки
У жестких ссылок есть два существенных ограничения:
1. Жесткая ссылка может указывать только на файл, но не на каталог,
потому что в противном случае в файловой системе могут возник¬
нуть ц и к л ы — бесконечные пути.
2. Жесткая ссылка не может указывать на файл в другой файловой с и
стеме. Н а п р и м е р , невозможно создать на жестком диске жесткую
ссылку на файл, расположенный на дискете*.
Чтобы избежать этих ограничений, были разработаны символьные
ссылки. Символьная ссылка — это просто файл, в котором содержится
и м я другого файла. С и м в о л ь н ы е ссылки, как и жесткие, предоставляют
возможность обращаться к одному и тому же файлу по разным именам.
* П р и ч и н а этого о г р а н и ч е н и я в т о м , ч т о н о м е р и н д е к с н о г о д е с к р и п т о р а у н и к а л е н т о л ь к о в
р а м к а х о д н о й ф а й л о в о й с и с т е м ы . В р а з н ы х ф а й л о в ы х системах могут оказаться д в а р а з н ы х
ф а й л а с о д и н а к о в ы м н о м е р о м и н д е к с н о г о д е с к р и п т о р а . В результате будет н е в о з м о ж н о ус¬
т а н о в и т ь , н а к а к о й из н и х указывает ж е с т к а я с с ы л к а .
75
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ l n -s e x a m p l e s / t e x t text-symlink
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l i
ples/text
[methody@localhost methody]$
76
Лекция 4 Работа с файловой системой
[ m e t h o d y @ l o c a l h o s t methody]$ r e a l p a t h text-symlink
/home/methody/examples/text
[ m e t h o d y @ l o c a l h o s t methody]$ rm examples/text
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l t e x t - h a r d l i n k
[ m e t h o d y @ l o c a l h o s t methody]$ rm text-hardlink
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l t e x t - h a r d l i n k
77
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ m k d i r test
[ m e t h o d y @ l o c a l h o s t methody]$ rm test
[ m e t h o d y @ l o c a l h o s t methody]$ r m d i r test
[methody@localhost methody]$
* « Р е к у р с и в н о » п о о т н о ш е н и ю к к а т а л о г а м обозначает, ч т о д е й с т в и е будет п р о и з в е д е н о
н а д с а м и м к а т а л о г о м , его п о д к а т а л о г а м и , п о д к а т а л о г а м и его п о д к а т а л о г о в и т. д.
78
Лекция 5 Доступ процессов к файлам и каталогам
Процессы
79
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ ps - f
процесс
Выполняющаяся программа в Linux. Каждый процесс имеет
уникальный идентификатор процесса, P I D . Процессы получают
доступ к ресурсам системы (оперативной памяти, файлам,
в н е ш н и м устройствам и т. п.) и могут изменять их содержимое.
Доступ регулируется с п о м о щ ь ю идентификатора пользователя и
идентификатора труппы, которые система присваивает каждому
процессу.
80
Лекция 5 Доступ процессов к файлам и каталогам
[ m e t h o d y @ l o c a l h o s t methody]$ c a t > l o o p
[ m e t h o d y @ l o c a l h o s t methody]$ sh loop
A
C
[methody@localhost methody]$
81
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ s h loop&
[1] 3634
[ m e t h o d y @ l o c a l h o s t methody]$ ps - f
82
Лекция 5 Доступ процессов к файлам и каталогам
[ m e t h o d y @ l o c a l h o s t methody]$ b a s h loop&
[2] 3639
[ m e t h o d y @ l o c a l h o s t methody]$ t o p
CPU states: 99,4% u s e r , 0,5% s y s t e m , 0,0% nice, 0,0% iowait, 0,0% idle
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
83
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ f g
bash loop
Л
С
Сигналы
84
Лекция 5 Доступ процессов к файлам и каталогам
сигнал
Короткое сообщение, посылаемое системой или процессом
другому процессу. Обрабатывается асинхронно специальной
подпрограммой-обработчиком. Если процесс н е обрабатывает
сигнал самостоятельно, это делает система.
[ m e t h o d y @ l o c a l h o s t methody]$ s h l o o p
A
Z
[1]+ S t o p p e d sh loop
[ m e t h o d y @ l o c a l h o s t methody]$ bg
[1]+ s h l o o p &
[ m e t h o d y @ l o c a l h o s t methody]$ f g
sh loop
A
C
[methody@localhost methody]$
85
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ s h
[1] 3652
[2] 3653
sh-2.05b$ p s - f H
sh-2.05b$ k i l l 3634
sh-2.05b$ p s - f H
86
Лекция 5 Доступ процессов к файлам и каталогам
sh-2.05b$ exit
[ m e t h o d y @ l o c a l h o s t methody]$ ps -fH
[ m e t h o d y @ l o c a l h o s t methody]$ ps
87
Курс Операционная система Linux
Чтение,запись и использование
Доступ к файлу
88
Лекция 5 Доступ процессов к файлам и каталогам
Сценарий
89
Курс Операционная система Linux
сценарий
И с п о л н я е м ы й текстовый файл. Для выполнения сценария тре
буется программа-интерпретатор, путь к которой может быть
указан в начале сценария в виде " #!путь_к_мнтерпретато-
ру". Если интерпретатор не задан, им считается / b i n / s h .
[ m e t h o d y @ l o c a l h o s t methody]$ ./script
[ m e t h o d y @ l o c a l h o s t methody]$ sh script
Hello, Methody!
[ m e t h o d y @ l o c a l h o s t methody]$ ./script
Hello, Methody!
90
Лекция 5 Доступ процессов к файлам и каталогам
#!/bin/sort
some
unsorted
lines
#!/bin/sort
lines
some
unsorted
#!/bin/sort
lines
some
unsorted
Доступ к каталогу
91
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ mkdir d i r
[ m e t h o d y @ l o c a l h o s t methody]$ /bin/ls d i r
smallfile
[ m e t h o d y @ l o c a l h o s t methody]$ cd d i r
[methody@localhost d i r ] $ pwd
/home/methody/dir
[methody@localhost d i r ] $ cd
[ m e t h o d y @ l o c a l h o s t methody]$ pwd
/home/methody
[ m e t h o d y @ l o c a l h o s t methody]$ chmod -x d i r
[ m e t h o d y @ l o c a l h o s t methody]$ lsdir
[ m e t h o d y @ l o c a l h o s t methody]$ alias l s
[ m e t h o d y @ l o c a l h o s t methody]$ /bin/ls d i r
smallfile
[ m e t h o d y @ l o c a l h o s t methody]$ cd d i r
-bash: c d : d i r : P e r m i s s i o n denied
92
Лекция 5 Доступ процессов к файлам и каталогам
[ m e t h o d y @ l o c a l h o s t methody]$ /bin/ls d i r
[ m e t h o d y @ l o c a l h o s t methody]$ c a t d i r / s m a l l f i l e
[ m e t h o d y @ l o c a l h o s t methody]$ c d d i r
[methody@localhost d i r ] $ /bin/ls
ls: .: P e r m i s s i o n denied
[methody@localhost d i r ] $ cd
[methody@localhost methody]$
93
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ rm - r f d i r
[ m e t h o d y @ l o c a l h o s t methody]$ rm - r f d i r
94
Лекция 6 Права доступа
Идентификатор пользователя
95
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ i d
[ m e t h o d y @ l o c a l h o s t methody]$ i d shogun
uid=400(shogun) gid=400(shogun) г
рyппы=400(shogun),4(adm),10(wheel),19(proc)
Идентификатор группы
96
Лекция 6 Права доступа
[methody@arnor methody]$ l s - l
итого 24
97
Курс Операционная система Linux
Здесь Мефодий использовал ключ " - d " (directory) для того, чтобы ls вы
водил информацию не о содержимом каталога tmp, а о самом этом каталоге.
98
Лекция 6 Права доступа
/tmp/read.Methody
/tmp/read.wheel
/tmp/read.methody
/tmp/read.Methody
99
Курс Операционная система Linux
Methody h i m s e l f c a n read
100
Лекция 6 Права доступа
Использование групп
[methody@arnor methody]$ l s - l / p r o c
[ m e t h o d y @ l o c a l h o s t methody]$ ps - a f
101
Курс Операционная система Linux
shogun@localhost ~ $ ps - a f
Разделяемые каталоги
[ m e t h o d y @ l o c a l h o s t methody]$ l s
102
Лекция 6 Права доступа
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l 4*
[ m e t h o d y @ l o c a l h o s t methody]$ rm - i 4*
[ m e t h o d y @ l o c a l h o s t methody]$ l s - d l /tmp
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l /tmp
итого 4
[ m e t h o d y @ l o c a l h o s t methody]$ rm - f /tmp/read.*
[ m e t h o d y @ l o c a l h o s t methody]$ l s /tmp
103
Курс Операционная система Linux
они, как правило, для совместной работы всех пользователей в системе, об
мена информацией и т. п.
П р и установке атрибута " t " доступ на использование для посторон
них ( " t " в строчке атрибутов стоит на месте последнего "x") не отменя
ется. Просто они так редко используются друг без друга, что l s выводит
их в одном и том же месте. Если кому-нибудь придет в голову организо¬
вать разделяемый каталог без доступа посторонним на использование, l s
выведет на месте девятого атрибута не " t " , а "T":
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l l o o p
[ m e t h o d y @ l o c a l h o s t methody]$ cp l o o p loopt
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l l o o p *
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l l o o p *
Суперпользователь
104
Лекция 6 Права доступа
суперпользователь
Единственный пользователь в Linux, на которого н е распрост
раняются ограничения прав доступа. Имеет нулевой идентифи
катор пользователя.
105
Курс Операционная система Linux
Подмена идентификатора
[foreigner@somewhere f o r e i g n e r ] $ l s - l /etc/shadow
106
Лекция 6 Права доступа
total 3
107
Курс Операционная система Linux
* П а р а м е т р к о м а н д ы umask д о л ж е н о б я з а т е л ь н о н а ч и н а т ь с я н а 0, к а к э т о п р и н я т о д л я
восьмеричных чисел в языке Си.
108
Лекция 7 Работа с текстовыми данными
Ввод и вывод
109
Курс Операционная система Linux
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF |
00000010 02 00 03 00 01 00 00 00 90 8b 04 08 34 00 00 00 | 4... |
00000100 00 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 | |
00000110 04 00 00 00 2f 6c 69 62 2f 6c 64 2d 6c 69 6e 75 | /lib/ld-linu|
00000120 78 2e 73 6f 2e 32 00 00 04 00 00 00 10 00 00 00 |x.so.2 |
00000130 01 00 00 00 47 4e 55 00 00 00 00 00 02 00 00 00 | GNU |
/ l i b / l d - l i nux.so.2
_Jv_RegisterClasses
gmon_start
l i bc.so.6
stdout
/ l i b / l d - l i nux.so.2
GNU
_Jv_Regi sterClasses
__gmon_start__
110
Лекция 7 Работа с текстовыми данными
l i bc.so.6
stdout
Для того чтобы записать данные в файл или прочитать их оттуда, про
цессу необходимо сначала открыть этот файл (при открытии на запись,
возможно, придется предварительно создать его). П р и этом процесс полу
чает дескриптор (описатель) открытого файла — уникальное для этого про
цесса число, которое о н и будет использовать во всех операциях записи.
Первый открытый файл получит дескриптор 0, второй — 1 и так далее. За
кончив работу с файлом, процесс закрывает его, при этом дескриптор осво
бождается и может быть использован повторно. Если процесс завершается,
не закрыв файлы, за него это делает система. Строго говоря, только в опера
ции открытия дескриптора указывается, какой именно файл будет задейст
вован. В качестве «файла» используются и обычные файлы, и файлы-дырки
(чаще всего — терминалы), и каналы, описанные в разделе «Конвейер».
Дальнейшие операции — чтение, запись и закрытие — работают с дескрип¬
тором, как с потоком данных, а куда именно ведет этот поток, неважно.
Каждый процесс Linux получает при старте три «файла», открытых
для него системой. П е р в ы й и з них (дескриптор 0) открыт на чтение, это
стандартный ввод процесса. И м е н н о со стандартным вводом работают все
операции чтения, если в них н е указан дескриптор файла. Второй (дес¬
криптор 1 ) — открыт на запись, это стандартный вывод процесса. С н и м
работают все операции записи, если дескриптор файла н е указан в них я в
но. Н а к о н е ц , третий поток данных (дескриптор 2) предназначается для
вывода диагностических сообщений, о н называется стандартный вывод
111
Курс Операционная система Linux
дескриптор
Описатель потока данных, открытого процессом. Дескрипторы
нумеруются, начиная с 0. П р и открытии нового потока данных
его дескриптор получает н а и м е н ь ш и й из неиспользуемых в этот
момент номеров. Три заранее открытых дескриптора — стан
дартный ввод (0), стандартный вывод (1) и стандартный вывод
ошибок (2) — выдаются при запуске.
Стандартный вывод
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l t e x t f i l e
112
Лекция 7 Работа с текстовыми данными
Пример 1.
A
D
[ m e t h o d y @ l o c a l h o s t methody]$ c a t t e x t f i l e
Пример 1.
[methody@localhost methody]$
113
Курс Операционная система Linux
Стандартный ввод
Пример 1.
[methody@localhost methody]$
Результат д е й с т в и я э т о й к о м а н д ы а н а л о г и ч е н к о м а н д е s o r t
t e x t f i l e — разница л и ш ь в том, ч т о когда используется "<", s o r t п о
лучает д а н н ы е со с т а н д а р т н о г о ввода, н и ч е г о н е з н а я о ф а й л е
" t e x t f i l e " , откуда о н и поступают. Механизм работы shell в д а н н о м
случае тот ж е , что и п р и перенаправлении вывода: shell читает д а н н ы е и з
файла " t e x t f i l e " , запускает утилиту s o r t и передает ей на стандарт¬
н ы й ввод содержимое файла.
Необходимо помнить, что операция ">" деструктивна: она всегда
создает файл нулевой длины. Поэтому для, допустим, сортировки данных
в файле надо применять последовательно s o r t < файл > новый_файл и
mv новый_файл файл. Команда вида команда < файл > тот_же_файл
просто урежет его д о нулевой длины!
[ m e t h o d y @ l o c a l h o s t methody]$ i n f o c a t > c a t . i n f o
114
Лекция 7 Работа с текстовыми данными
info: Завершено.
[ m e t h o d y @ l o c a l h o s t methody]$ head -1 c a t . i n f o
Output o f e n t i r e files
[methody@localhost methody]$
[ m e t h o d y @ l o c a l h o s t methody]$ c a t c a t . s t d e r r
info: Завершено.
[methody@localhost methody]$
115
Курс Операционная система Linux
info: Завершено.
Output o f e n t i r e files
[methody@localhost methody]$
Перенаправление в никуда
116
Лекция 7 Работа с текстовыми данными
[methody@localhost methody]$
Конвейер
[ m e t h o d y @ l o c a l h o s t methody]$ c a t c a t . i n f o | less
117
Курс Операционная система Linux
канал, pipe
Неделимая пара дескрипторов (входной и выходной), связан¬
ных друг с другом таким образом, что д а н н ы е , записанные во
входной дескриптор, будут немедленно доступны на чтение с
выходного дескриптора.
Фильтры
118
Лекция 7 Работа с текстовыми данными
119
Курс Операционная система Linux
120
Лекция 7 Работа с текстовыми данными
Примеры задач
Подсчет
[ m e t h o d y @ l o c a l h o s t methody]$ f i n d . | wc - l
42
[methody@localhost methody]$
121
Курс Операционная система Linux
Отбрасывание ненужного
/dev/null \
> | c u t -d / - f 3
syslog.conf
anacrontab
[methody@localhost methody]$
122
Лекция 7 Работа с текстовыми данными
Выбор нужного
Поиск
Зачастую пользователю нужно найти только упоминания чего-то
конкретного среди данных, выводимых утилитой. Обычно эта задача сво
дится к поиску строк, в которых встречается определенное слово или к о м
бинация символов. Для этого подходит стандартная утилита g r e p . g r e p
может искать строку в файлах, а может работать к а к фильтр: получив стро¬
ки со стандартного ввода, она выведет на стандартный вывод только те
строки, где встретилось искомое сочетание символов. М е ф о д и й решил
поинтересоваться процессами b a s h , которые выполняются в системе:
123
Курс Операционная система Linux
684:*Note Invoking::
[methody@susanin methody]$
124
Лекция 7 Работа с текстовыми данными
ноль или больше любых символов, кроме ":" , за которыми следует стро¬
ка "::"». Особенность работы "*" состоит в том, что она пытается вы¬
брать совпадение максимальной д л и н ы . И м е н н о поэтому элемент, к ко¬
торому относилась "*", был задан к а к «не ":"». Выражение «ноль или
более любых символов» (оно записывается как ".*") в случае, когда, на
пример, в одной строке встречается две ссылки, вбирает подстроку от
к о н ц а первого " * N o t e " до начала последнего (символы ":", п о м е с
тившиеся внутри этой подстроки, распознаются как «любые»).
На я з ы к е регулярных выражений м о ж н о также обозначить «любой
символ» ("."), «одно или более совпадений» (" + "), начало и к о н е ц стро
ки (" " и "$ " соответственно) и т. д. Благодаря регулярным в ы р а ж е н и
л
Замены
125
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ c a t c a t . i n f o |t r
a b c d e f g h i j k l m n o p q r s t u v w x y z абцдефгхийклмнопкрстуввсиз \
[methody@localhost methody]$
л A
[ m e t h o d y @ l o c a l h o s t methody]$ l s - l | s e d s / - [ - r w x ] * / Ф а й л : / | sed s / d [ -
rwx^/Каталог:/
итого 124
126
Лекция 7 Работа с текстовыми данными
[methody@oblomov methody]$
Упорядочивание
| t r "[:space:][:punct:]" "\n" \
15233
720 the
342 of
251 to
244 a
213 and
180 or
180 i s
[methody@localhost methody]$
127
Курс Операционная система Linux
Запуск команд
/ b i n/egrep
/ b i n/fgrep
/bin/unicode_start
/bin/bootanim
[methody@localhost methody]$
128
Лекция 8 Возможности командной оболочки
Редактирование ввода
ки) — предоставляет сам терминал Linux. Эти команды работают для лю
бого построчного ввода: например, если запустить программу c a t без па¬
раметров, чтобы та немедленно отображала вводимые с терминала стро¬
ки. Если п о каким-то п р и ч и н а м в строчку на экране попало что-то л и ш
нее, м о ж н о нажать (redraw) — система выведет в новой строке со¬
держимое входного буфера.
М е ф о д и й н е забыл, ч т о c a t без параметров следует завершать ко¬
мандой " Б " (конец ввода). Эту команду, как и предыдущие, интерпрети
Л
[ m e t h o d y @ l o c a l h o s t methody]$ s t t y -a
129
Курс Операционная система Linux
A A A A A
eol2 = ; start = Q; stop = S ; susp = Z ; r p r n t = R; werase = W;
tab0 bs0 v t 0 f f 0
-tostop -echoprt
echoctl echoke
00000020 74 72 6c 2b 44 03 0a |trl+D..|
00000027
130
Лекция 8 Возможности командной оболочки
131
Курс Операционная система Linux
История команд
132
Лекция 8 Возможности командной оболочки
[methody@localhost methody]$
AR | (reverse-i-search)"':
i | (reverse-i-search)'i': l s i
n | (reverse-i-search)'in': info
f | (reverse-i-search)^inf': info
o | (reverse-i-search)'info': info
History"
Сокращения
сем не доискаться, если она уже выбыла оттуда. Для того чтобы оператив¬
но заменять короткие команды д л и н н ы м и , стоит воспользоваться сокра
щениями (aliases). В конфигурационных файлах командного интерпретато¬
ра пользователя обычно уже определено несколько сокращений, список
которых можно посмотреть с п о м о щ ь ю команды a l i a s без параметров:
[ m e t h o d y @ l o c a l h o s t methody]$ alias
133
Курс Операционная система Linux
alias md='mkdir'
alias rd='rmdir'
[ m e t h o d y @ l o c a l h o s t methody]$ u n a l i a s cp rm mv
[ m e t h o d y @ l o c a l h o s t methody]$ pd / b i n
/bin ~
[ m e t h o d y @ l o c a l h o s t b i n ] $ pd / u s r / s h a r e / d o c
/usr/share/doc /bin ~
/var/tmp /bin ~
[methody@localhost tmp]$ pp
/bin ~
[methody@localhost b i n ] $ pp
[ m e t h o d y @ l o c a l h o s t methody]$ pp
134
Лекция 8 Возможности командной оболочки
команда-сокращение, alias
Внутренняя команда shell, задаваемая пользователем. Обычно
заменяет одну более длинную команду, которая часто использу
ется при работе в командной строке. С о к р а щ е н и я не наследу
ются с окружением.
Достраивание
[ m e t h o d y @ l o c a l h o s t methody]$ l s - a l / b i n / b a s e
[ m e t h o d y @ l o c a l h o s t methody]$ b a s e
examples/-filename-with-
-filename-with-
135
Курс Операционная система Linux
Шаблоны
136
Лекция 8 Возможности командной оболочки
шаблон, pattern
Строка специального формата, используемая в процедурах тек
стового поиска. Говорят, что строка соответствует шаблону, ес¬
ли м о ж н о п о определенным правилам каждому символу строки
поставить в соответствие символ шаблона. В Linux наиболее
популярны ш а б л о н ы в формате командного интерпретатора и
регулярные выражения.
137
Курс Операционная система Linux
Использование шаблонов
[ m e t h o d y @ l o c a l h o s t methody]$ l s .bash*
[ m e t h o d y @ l o c a l h o s t methody]$ /bin/e*
[ m e t h o d y @ l o c a l h o s t methody]$ l s * a *
- f i lename-wi t h -
[ m e t h o d y @ l o c a l h o s t methody]$ l s -dF * [ a o ] *
138
Лекция 8 Возможности командной оболочки
Documents l o o p to.sort
*o*
*o*
*y*
[ m e t h o d y @ l o c a l h o s t methody]$ l s *y*
139
Курс Операционная система Linux
Окружение
140
Лекция 8 Возможности командной оболочки
[ m e t h o d y @ l o c a l h o s t methody]$ date
окружение, environment
Набор данных, п р и п и с а н н ы х системой процессу. Процесс м о
жет пользоваться и н ф о р м а ц и е й и з окружения д л я настройки,
изменять и дополнять его. Окружение представлено в виде пе
ременных окружения и их значений. П р и порождении процесса
окружение родительского процесса наследуется дочерним ( к о
пируется).
141
Курс Операционная система Linux
[ m e t h o d y @ l o c a l h o s t methody]$ A=dit
[ m e t h o d y @ l o c a l h o s t methody]$ C=dah
[ m e t h o d y @ l o c a l h o s t methody]$ echo $A $B $C
d i t dah
[ m e t h o d y @ l o c a l h o s t methody]$ echo $A $B $C
d i t dah
di t dah
$A $B $C
-- ru_RU.KOI8-R
Rty -- C
[ m e t h o d y @ l o c a l h o s t methody]$ s h
142
Лекция 8 Возможности командной оболочки
-- C
sh-2.05b$ exit
Rty -- C
[ m e t h o d y @ l o c a l h o s t methody]$ e x p o r t Qwe
[ m e t h o d y @ l o c a l h o s t methody]$ s h
Rty -- C
sh-2.05b$ exit
143
Курс Операционная система Linux
/home/methody/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/usr/games
[ m e t h o d y @ l o c a l h o s t methody]$ m k d i r /home/methody/bin
[ m e t h o d y @ l o c a l h o s t methody]$ script
Hello, Methody!
144
Лекция 8 Возможности командной оболочки
[ m e t h o d y @ l o c a l h o s t methody]$ c d examples/
[\u@\h \W]\$
-->
-->
PS1="\t \w "
22:11:47 ~
22:11:48 ~
methody@localhost:~/examples $
methody@localhost:~/examples $
methody@localhost:~/examples $ cd
methody@localhost:~ $
methody@localhost:~ $
Язык программирования sh
Некогда М е ф о д и й выучил несколько я з ы к о в программирования, и
уже собрался было написать к о е - к а к и е нужные программы н а С и и л и
Python, однако Гуревич его остановил. Большая часть того, что нужно на
ч и н а ю щ е м у пользователю Linux, делается с п о м о щ ь ю одной правильной
145
Курс Операционная система Linux
Интеграция процессов
Каждый процесс Linux при завершении передает родительскому код
возврата (exit status), который равен нулю, если процесс считает, что его
работа была успешной, или номеру ошибки — в противном случае. Команд¬
н ы й интерпретатор хранит код возврата последней команды в специаль¬
ной переменной " ? " . Что более важно, код возврата используется в ус
ловных операторах: если он равен нулю, условие считается выполнен¬
н ы м , а если нет — н е в ы п о л н е н н ы м :
[ m e t h o d y @ l o c a l h o s t methody]$ g r e p Methody b i n / s c r i p t
"Yes"; f i
"Yes"; f i
Yes
146
Лекция 8 Возможности командной оболочки
"$A<$B" ; f i
"$A<$B" ; f i
5<6
значения переменной, она происходит перед тем, как начнется разбор ко¬
мандной строки: выполнив команду и получив от нее какой-то текст, shell
примется разбирать его, как если бы этот текст пользователь набрал вруч¬
ную. Это очень удобное средство, если то, что выводит команда, необхо¬
д и м о передать самому интерпретатору:
147
Курс Операционная система Linux
[methody@localhost methody]$ e x p r $A + $B
14
8 + 6 = 14
e x p r : нечисловой аргумент
3.1415 + 2.718 =
5.8595
Сценарии
#!/bin/sh
$1 $3
$2 $3
examples: directory
148
Лекция 8 Возможности командной оболочки
4 bin/loop 4 bin/two
4 9 44 b i n/two
1 5 26 b i n / l o o p
5 14 70 итого
[ m e t h o d y @ l o c a l h o s t methody]$ f o r V a r i n Wuff-Wuff
Wuff-Wuff
Miaou-Miaou
echo
<Сбт><Ноя><6><12:08:38><2004>
[ m e t h o d y @ l o c a l h o s t methody]$ c a t > / t m p / s e t v a r
QWERTY="$1"
149
Курс Операционная система Linux
Привязка к клавишам
"\e[5~": backward-word
"\e[6~": forward-word
150
Лекция 8 Возможности командной оболочки
Стартовые сценарии
151
Курс Операционная система Linux
Пример настроек
PS1="\u@\h:\w \$ "
EDITOR="/usr/bin/vim"
# Get t h e a l i a s e s and f u n c t i o n s
if [ - f -/.bashrc ]; then
. -/.bashrc
fi
if [ -r -/.alias ]; then
. -/.alias
fi
# Source g l o b a l definitions
if [ - r /etc/bashrc ]; then
. /etc/bashrc
fi
152
Лекция 8 Возможности командной оболочки
alias pd='pushd'
alias pp='popd'
alias vi='/usr/bin/vim'
153
Курс Операционная система Linux
* Э т а к а ж у щ а я с я с е г о д н я т р и в и а л ь н о й в о з м о ж н о с т ь с к о л ь к о у г о д н о р е д а к т и р о в а т ь текст,
н е о с т а в л я я п р и э т о м н и к а к и х следов, б ы л а р а д и к а л ь н е й ш и м д о с т и ж е н и е м п р о г р е с с а п о
сравнению с пишущей машинкой.
154
Лекция 9 Текстовые редакторы
155
Курс Операционная система Linux
Vi и лучше, чем Vi
156
Лекция 9 Текстовые редакторы
Запуск Vi
157
Курс Операционная система Linux
Режимы
режимы Vi
Состояния редактора V i , в которых он по-разному обрабатывает
нажатия клавиш. Различают три режима V i : командный (нажатие
любой клавиши считается командой и немедленно исполняет
ся), вставки (нажатие клавиши-печатного символа приводит к
вставке этого символа в текст) и командной строки (для ввода
длинных команд, отображаемых на экране; ввод завершается
Enter).
158
Лекция 9 Текстовые редакторы
* Е с л и и с п о л ь з у е т с я н е V i m , и л и н а с т р о й к а showmode п о у м о л ч а н и ю з а п р е щ е н а , с о о б щ е
н и я может и не быть.
** Если V i m п р и ш е л в н е п о н я т н о е д л я в а с с о с т о я н и е , н а ж м и т е E S C , ч т о б ы вернуться в к о
м а н д н ы й р е ж и м (иногда требуется н а ж а т ь E S C д в а ж д ы ) .
159
Курс Операционная система Linux
methody@oblomov:~ $ v i t e x t f i l e
Пример 1.
Пример 1.
160
Лекция 9 Текстовые редакторы
Работа с файлами
Пример 1.
161
Курс Операционная система Linux
Перемещение по тексту
* У п р а в л я ю щ а я п о с л е д о в а т е л ь н о с т ь << с" п р и в о д и т к а в а р и й н о м у з а в е р ш е н и ю т е к у щ е й
Л
команды Vi, а н е с а м о г о р е д а к т о р а .
162
Лекция 9 Текстовые редакторы
множитель
Число, предшествующее команде V i m и означающее, что дан¬
ную команду следует выполнить указанное число раз.
* Прежде ч е м н а ч и н а т ь э к с п е р и м е н т и р о в а т ь с п е р е м е щ е н и е м , н у ж н о п е р е й т и в к о м а н д н ы й
режим.
Л
** С и м в о л а м и " " и " $ " в Linux п о в с е м е с т н о о б о з н а ч а ю т с я н а ч а л о и к о н е ц с т р о к и , в ч а
стности, в регулярных выражениях.
163
Курс Операционная система Linux
нажать "/": в последней строке появится символ "/". Далее следует вве
сти шаблон для поиска — он будет отображаться в этой строке, его м о ж н о
редактировать. Обычно V i настроен таким образом, что шаблон для п о и с
ка интерпретируется как регулярное выражение, где ряд символов имеет
специальное значение, эту настройку м о ж н о отключить ( " : s e t nomag -
i c " ) . После того, как введен шаблон, следует нажать Enter — курсор п е
реместится к ближайшему (далее по тексту) совпадению с шаблоном. По¬
и с к в обратном направлении (к предыдущему совпадению) следует начи¬
нать с команды " ? " .
Совсем просто перейти к следующему употреблению в тексте того
слова, на котором стоит курсор: для этого нужно просто нажать "*" в к о
мандном режиме. Аналогичная команда поиска слова в обратном направ
л е н и и — "#". М о ж н о специально отметить в тексте точку и затем в любой
момент возвращаться к ней, как к закладке. Одну закладку определяет
сам V i — " " " " , место в тексте, где было сделано последнее изменение.
Подробно об этих и других командах перемещения м о ж н о прочесть в ру
ководстве по V i m по команде " : h e l p u s r _ 0 3 . t x t " .
Изменение текста
Пример 1.
:s/.$/.../
164
Лекция 9 Текстовые редакторы
165
Курс Операционная система Linux
гнездовая команда
Команда редактора V i , позволяющая применить указанное дей
ствие к указанному отрезку текста. Отрезок задается стан
дартной командой перемещения по тексту.
Пример 1.
Моя #vi...
166
Лекция 9 Текстовые редакторы
Пример 1.
первая строка в
4,1 Весь
167
Курс Операционная система Linux
команда режима командной строки, такая как ":w" или " : r " . Многие к о
манды командного режима (в частности, "d" и "у") доступны также и в ко¬
мандной строке. В качестве адреса можно использовать номера строк в
файле (команда ":1,5у" будет означать «скопировать в регистр строки с
первой по пятую»), есть специальные обозначения для текущей строки
("."), последней строки ("$") и всего файла ("%"). Указать границу диа
пазона можно и при помощи шаблона: граничной будет считаться та стро
ка, в которой обнаружится шаблон.
Последним свойством М е ф о д и й воспользовался, чтобы удалить
плоды своих экспериментов: о н выполнил команду ":/Пример 1/,$d"
(от строки "Пример 1" д о конца файла — удалить):
3 fewer lines
Настройка Vi и Vim
Л у ч ш е , чем Emacs?
168
Лекция 9 Текстовые редакторы
169
Курс Операционная система Linux
режим Emacs
Комплекс команд и настроек Emacs, предназначенных для ра¬
боты с текстом определенной структуры, например содержи¬
м ы м каталога, программой на Си и. т. п.
Команды Emacs
170
Лекция 9 Текстовые редакторы
* З а с в о и д л и н н ы е к о м а н д ы и з р а з н ы х к о м б и н а ц и й у п р а в л я ю щ и х к л а в и ш н а з в а н и е Emacs
п о л у ч и л о ш у т о ч н у ю р а с ш и ф р о в к у : Escape-Meta-Alt-Control-Shift.
171
Курс Операционная система Linux
Работа с файлами
Help
/home/methody/bin:
итого 24
172
Лекция 9 Текстовые редакторы
-RRR:%%-F1 b i n ( D i r e d by name)--L5--C51--All--Reading d i r e c t o r y
/home/methody/bin/...done
Перемещение по тексту
В Emacs, к а к и в V i m , есть понятие «точка» — то место в буфере, где
будет происходить вставка и л и удаление данных. П е р е м е щ е н и е п о тексту
— это перемещение точки. К о м а н д ы перемещения п о структурным эле¬
ментам текста развиты н е менее, ч е м в V i m — п о м и м о обычных стрелок,
действуют команды перемещения в начало и к о н е ц строки ( C - a и C - e ) ,
буфера ( M - < и M->), предложения ( M - a и M - e ) , к предыдущему и следую
щему слову ( M - f и M - b ) , абзацу ( M - f и M-}). Различные основные режи
мы предоставляют специализированные команды для перемещения по
структурным элементам текстов на разных языках программирования,
разметки и д р .
В Emacs несколько видов поиска: существуют отдельные команды
для поиска строки и поиска п о регулярному выражению. Если требуется
найти ближайшее употребление конкретного слова, удобнее всего вос¬
пользоваться наращиваемым поиском п о команде C - s . Н а р а щ и в а е м ы й п о
иск уже встречался Мефодию: так был устроен поиск п о истории команд
в b a s h . П о мере набора первых символов искомой строки Emacs перено¬
сит точку к ближайшему подобному сочетанию символов после курсора.
П о и с к в обратном направлении (к началу буфера) осуществляется к о м а н
дой C - r . Наращиваемый п о и с к м о ж н о выполнять по регулярному выра
ж е н и ю ( C - M - s ) . Все виды наращиваемого поиска в Emacs н е различают
п р о п и с н ы е и строчные буквы.
Изменение текста
173
Курс Операционная система Linux
174
Лекция 9 Текстовые редакторы
область
Н е п р е р ы в н ы й отрезок текста, ограниченный точкой с одной
стороны и меткой с другой.
Настройка Emacs
175
Курс Операционная система Linux
176
Лекция 10 Этапы загрузки системы
Досистемная загрузка
177
Курс Операционная система Linux
Загрузчик в ПЗУ
Сразу после включения оперативная память компьютера классической
архитектуры девственно чиста. Для того чтобы начать работать, процессору
необходима хоть какая-то программа. Эта программа автоматически загру
жается в память из постоянного запоминающего устройства, ПЗУ (или R O M ,
read-only memory), в которое она вписана раз и навсегда в неизменном в и
де*. В специализированных компьютерах (например, в дешевых игровых при
ставках) все, что нужно пользователю, записывается именно на П З У (часто
сменное), и запуском программы оттуда загрузка заканчивается.
Обычно в компьютерах общего назначения программа и з П З У поль¬
зователю ничем полезна н е бывает: она невелика, да и делает всегда одно
и то же. Слегка изменить поведение программы из П З У м о ж н о , оперируя
д а н н ы м и , записанными в энергонезависимую память (иногда ее называют
C M O S , иногда — N V R A M ) . Объем энергонезависимой памяти очень неве
лик, а д а н н ы е и з нее сохраняются после выключения компьютера за счет
автономного электропитания (как правило, от батарейки вроде часовой).
Что должна уметь эта начальная программа? Распознавать основные
устройства, на которых может быть записана другая — нужная пользова
телю — программа, уметь загружать эту программу в память и передавать
ей выполнение, а также поддерживать интерфейс, п о з в о л я ю щ и й менять
настройки в N V R A M . Собственно, это даже н е одна программа, а множе¬
ство подпрограмм, занимающихся взаимодействием с разнообразными ус
тройствами ввода-вывода — к а к с теми, на которых могут храниться про¬
граммы (жесткие и гибкие диски, магнитные ленты и даже сетевые кар¬
ты), т а к и теми, посредством которых м о ж н о общаться с пользователем
(последовательные порты передачи данных — если есть возможность под
ключить консольный терминал, системная клавиатура и видеокарта — для
простых персональных рабочих станций). Этот набор подпрограмм в ПЗУ
обычно называется BIOS (basic input-output system).
BIOS
С о к р а щ е н и е от «Basic Input-Ooutput System», набор подпро
грамм в ПЗУ, предназначенных для простейшего низкоуровне¬
вого доступа к в н е ш н и м устройствам компьютера. В современ¬
ных О С используется только в процессе начальной загрузки.
178
Лекция 10 Этапы загрузки системы
карта размещения
Представление области с необходимыми д а н н ы м и (например,
вторичным загрузчиком или ядром системы) в виде списка сек¬
торов диска, которые она занимает.
179
Курс Операционная система Linux
первичный загрузчик
Первая стадия загрузки компьютера: программа, размер и воз
можности которой зависят от аппаратных требований и функ
ц и й BIOS. Основная задача — загрузить вторичный загрузчик.
Загрузчик ядра
* Н а п р и м е р , B O O T A C T V и з п а к е т а p f d i s k и л и с т а н д а р т н ы й д л я FreeBSD п р е д з а г р у з ч и к
boot 0, к о т о р ы е , в силу и х досистемности, м о ж н о п р и м е н я т ь где у г о д н о .
180
Лекция 10 Этапы загрузки системы
181
Курс Операционная система Linux
вторичный загрузчик
Вторая стадия загрузки компьютера: программа, размер и воз
можности которой практически н е зависят от аппаратных тре
бований. Основная задача — полностью подготовить и запус¬
тить загрузку операционной системы.
182
Лекция 10 Этапы загрузки системы
LILO
boot=/dev/hda
map=/boot/map
image=/boot/vmlimiz-up
root=/dev/hda1
boot=/dev/hda
map=/boot/map
default=linux-up
prompt
timeout=5 0
image=/boot/vmlinuz-up
label=linux-up
183
Курс Операционная система Linux
root=/dev/hda5
initrd=/boot/initrd-up.img
read-only
image=/boot/vmlinuz-up
label=failsafe
root=/dev/hda5
initrd=/boot/initrd-up.img
vga=normal
read-only
other=/dev/hda1
label=dos
other=/dev/fd0
label=floppy
unsafe
184
Лекция 10 Этапы загрузки системы
GRUB
default 0
t i m e o u t 50
title linux-up
initrd (hd0,4)/boot/initrd-up.img
* Т. е. н а н у л е в о й д о р о ж к е н у л е в о г о ц и л и н д р а , н а ч и н а я с с е к т о р а 2. Э т а о б л а с т ь д и с к а ч а
с т о н е и с п о л ь з у е т с я п о д ф а й л о в ы е с и с т е м ы ( с м . л е к ц и ю 11).
185
Курс Операционная система Linux
title failsafe
acpi=off
initrd (hd0,4)/boot/initrd-up.img
title floppy
root (fd0)
chainloader +1
title dos
root (hd0,0)
chai nloader +1
186
Лекция 10 Этапы загрузки системы
ядро
Набор подпрограмм, используемых для организации доступа к
ресурсам компьютера, для обеспечения запуска и взаимодейст
вия процессов, для проведения политики безопасности систе
м ы и для других действий, которые могут выполняться только в
режиме полного доступа (т. н. «режиме супервизора»).
187
Курс Операционная система Linux
Загрузка системы
188
Лекция 10 Этапы загрузки системы
стеме устройств, быть может, добавлял новые (те, что не нужны для за
грузки, но необходимы для работы, например, звуковые) и компилировал
из исходных текстов новое, профильное ядро.
# lsmod
189
Курс Операционная система Linux
ac 1792 0
ext3 62288 2
модуль ядра
Необязательная часть ядра, р а с ш и р я ю щ а я его ф у н к ц и о н а л ь
ность. Модуль м о ж н о загрузить в память и л и удалить оттуда в
процессе работы системы.
190
Лекция 10 Этапы загрузки системы
[root@localhost r o o t ] # l s - l g /boot
initrd-2.4.26-std-up.img
191
Курс Операционная система Linux
* M i n g e t t y - у п р о щ е н н ы й а н а л о г getty, р а б о т а ю щ и й т о л ь к о н а в и р т у а л ь н ы х к о н с о л я х .
** П о н я т н о , ч т о C t r l + A l t + D e l — э т о н е r e s e t , а о б ы ч н о е с о ч е т а н и е к л а в и ш . Д л я удоб
ства п о л ь з о в а т е л я его с п е ц и а л ь н о р а с п о з н а е т к л а в и а т у р н ы й д р а й в е р , а я д р о с о о б щ а е т об
этом i n i t - y .
192
Лекция 10 Этапы загрузки системы
демон
Запускаемая в ф о н е программа, длительное время пребываю
щая в таблице процессов. Обычно демон активизируется по за¬
просу пользовательской программы, по сетевому запросу или
по наступлению какого-либо системного события.
193
Курс Операционная система Linux
194
Лекция 10 Этапы загрузки системы
S a v i n g OSS m i x e r s e t t i n g s : [ DONE ]
L o a d i n g OSS m i x e r s e t t i n g s : [ DONE ]
1:2,5c
2:2,5c
es1371 25608 0
3:1a
Схема «.d»
195
Курс Операционная система Linux
196
Лекция 10 Этапы загрузки системы
ту, как это далает ls, и запускать подряд. Практически ж е такое требование
накладывает ограничение на и м я ссылки в <<^»-каталоге, поэтому п р и
нято, чтобы в начале имени стояло двузначное число. Тогда, запуская под
ряд все сценарии, отсортированные по алфавиту, r c будет в первую оче
редь руководствоваться этим номером, а уж потом — названием службы,
которое после него стоит.
Уровни выполнения
197
Курс Операционная система Linux
id:3:initdefault:
[root@localhost root]# r u n l e v e l
N 3
уровень выполнения
Сохраненный профиль загрузки системы. В Linux реализован
выполнением всех сценариев остановки и запуска служб из
подкаталога гсуровеньЛ каталога / e t c или / e t c / r e d
[root@localhost r o o t ] # l s -F /etc/red
* В н е к о т о р ы х д и с т р и б у т и в а х — в каталоге / e t c / .
198
Лекция 10 Этапы загрузки системы
../init.d/netfs
# c h k c o n f i g : 345 25 75
/etc/rc.d/rc0.d/K75netfs /etc/rc.d/rc3.d/S25netfs
/etc/rc.d/rc6.d/K75netfs
/etc/rc.d/rc1.d/K75netfs /etc/rc.d/rc4.d/S25netfs
/etc/rc.d/rc2.d/K75netfs /etc/rc.d/rc5.d/S25netfs
199
Курс Операционная система Linux
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
id:5: i n i t d e f a u l t :
200
Лекция 10 Этапы загрузки системы
Останов системы
К а к уже говорилось, операция, обратная загрузке системы — останов
— устроена в Linux как специальный уровень выполнения: 0 — если требу
ется выключить систему, и 6 — если требуется перезагрузка. Соответству
ю щ и е каталоги r c 0 . d и r c 6 . d будут состоять почти сплошь из ссылок
вида K*, н о к а к м и н и м у м один сценарий, k i l l a l l , будет запущен с п а
раметром «start». Этот сценарий остановит все процессы, которые н е бы
ли остановлены K-сценариями: программы пользователей, демоны, запу¬
щ е н н ы е администратором вручную, и т. п.
* Н е п у т а т ь с диспетчером окон, о п и с а н н ы м в л е к ц и и 15.
201
Курс Операционная система Linux
202
Лекция 10 Этапы загрузки системы
Sorry, we need t o r e b o o t
Sorry, we need t o r e b o o t
Sorry, we need t o r e b o o t
Sorry, we need t o r e b o o t
203
Курс Операционная система Linux
204
Лекция 11 Работа с внешними устройствами
Здесь М е ф о д и й п о п ы т а л с я п р о ч и т а т ь ч т о - л и б о из устройства
/ d e v / s d g 1 4 , что соответствует четырнадцатому разделу SCSI-диска под
номером 7. Такого диска в этой м а ш и н е , конечно, нет, а файл-дырка для
него заведен на всякий случай: вдруг появится? Поскольку появиться м о
жет любое из поддерживаемых Linux устройств, таких файлов «на всякий
случай» в системе бывает и десять тысяч, и двадцать. Файл-дырка не за¬
нимает места на диске, однако использует индексный дескриптор, поэтому
в корневой файловой системе, независимо от ее объема, должен быть и з
р я д н ы й запас индексных дескрипторов.
П р и динамической схеме именования применяется специальная
виртуальная файловая система, которая либо полностью подменяет ката
лог /dev, либо располагается в другом каталоге (например, / s y s ) , и м е ю
щ е м непохожую на / d e v иерархическую структуру; в этом случае ф а й л ы -
д ы р к и в / d e v заводит специальная служба. Этот способ гораздо удобнее
и для человека, который запустил команду l s /dev, и для компьютера (в
случае подключения внешних устройств, например, съемных жестких
дисков, «на лету»). Однако он требует соблюдать дополнительную логику
«привязки» найденного устройства к и м е н и , иногда весьма запутанную
из-за той ж е нечеткой идентификации. Поскольку происходить это долж¬
но в самый ответственный момент, при загрузке системы, динамическую
схему именования используют с осторожностью.
205
Курс Операционная система Linux
/dev/ze*
206
Лекция 11 Работа с внешними устройствами
methody@localhost:~ $ m k f i f o hole
Декабря 2 004
m e t h o d y @ l o c a l h o s t : ~ $ rm h o l e
канал
Объект Linux, используемый в межпроцессном взаимодействии.
Доступен в виде двух дескрипторов: один открыт на запись, другой —
на чтение. Все данные, записываемые в первый дескриптор, немед¬
ленно можно прочитать из второго. Различают неименованный ка¬
нал, уничтожаемый с закрытием обоих дескрипторов, и именован¬
ный канал (FIFO) — файл-дырку, создаваемый в файловой системе.
* Е с л и с т а н д а р т н ы й в ы в о д о ш и б о к всего к о н в е й е р а п е р е н а п р а в л е н в / d e v / n u l l , т о к о
м а н д н ы й и н т е р п р е т а т о р н е в ы в о д и т с о о б щ е н и й о запуске и о с т а н о в к е ф о н о в о г о п р о ц е с с а .
207
Курс Операционная система Linux
Драйверы устройств
Работа с устройствами
208
Лекция 11 Работа с внешними устройствами
$ who
209
Курс Операционная система Linux
methody@localhost:~ $ l s - l /usr/bin/write
shogun@localhost ~ $ l s - l L /dev/{audio,cdrom,fd0,hda,kmem}
210
Лекция 11 Работа с внешними устройствами
раздел диска
Часть жесткого диска, используемая под определенные задачи:
файловую систему того или иного типа, область подкачки и т. п.
И з м е н е н и е содержимого и типа одного раздела н и к а к не сказы
вается на других.
211
Курс Операционная система Linux
212
Лекция 11 Работа с внешними устройствами
Дело в том, что четырех разделов редко когда бывает достаточно. Ку
да ж е помещать дополнительные поля таблицы разбиения? Создатели
I B M P C предложили универсальный способ: один и з четырех основных
разделов объявляется расширенным (extended partition); о н , к а к правило,
занимает все оставшееся пространство диска. Р а с ш и р е н н ы й раздел раз
бивается на подразделы п о тем ж е правилам, что и весь диск: в самом его
начале заводится H D P T с четырьмя записями (соответствующие и м раз
делы называются дополнительными (secondary partition), которые снова
м о ж н о использовать, причем один из подразделов может быть, опять-та¬
ки, р а с ш и р е н н ы м , со своими подразделами и т. д.*
Чтобы н е усложнять эту схему, п р и разметке диска соблюдают два
правила: во-первых, р а с ш и р е н н ы х разделов в таблице разбиения диска
может быть н е более одного, а во-вторых, таблица разбиения расширенно
го раздела может содержать либо одну запись — описание дополнительно -
го раздела, либо две — описание дополнительного раздела и описание
вложенного расширенного раздела. Соблюдение этого правила позволяет
в Linux нумеровать разделы линейно: после четырех основных номер 5 п о
лучает дополнительный раздел в первом р а с ш и р е н н о м , 6 — раздел во вто¬
р о м р а с ш и р е н н о м , вложенным в первый, и т. п. Сами вложенные расши¬
р е н н ы е разделы п р и этом н е нумеруются и никакому устройству в / d e v /
не соответствуют. В действительности разбиение диска двухсистемной
м а ш и н ы Мефодия выглядит к а к на рис. 11.1.
И разделы, и таблицы разбиения принято размещать с начала цилин¬
дра (термин, и м е ю щ и й о т н о ш е н и е к внутреннему устройству жесткого
диска), так что п р и заведении каждого расширенного раздела на этом
компьютере тратилось впустую п о четыре мегабайта (таков, по сведениям
f d i s k , размер цилиндра).
Той ж е тактикой — разбиением н е диска, а раздела — пользуются,
когда таблица разбиения нестандартна для I B M P C . Н а п р и м е р , U N I X -
подобные системы семейства B S D используют собственный универсаль¬
н ы й формат разбиения (он старше, ч е м сама идея об I B M PC!), для чего
подобной системе выделяется один раздел, и она творит с н и м все, что за
благорассудится.
Область подкачки
* Осторожнее с п р о г р а м м о й fdisk! О н а п р е д н а з н а ч е н а д л я с о з д а н и я , и з м е н е н и я и у д а л е н и я
разделов д и с к а .
213
Курс Операционная система Linux
520
214
Лекция 11 Работа с внешними устройствами
Файловая с и с т е м а
215
Курс Операционная система Linux
216
Лекция 11 Работа с внешними устройствами
Монтирование и размонтирование
[root@localhost r o o t ] # mount
/dev/hda5 on / t y p e e x t 3 (rw)
217
Курс Операционная система Linux
[root@localhost r o o t ] # l s /home
[root@localhost r o o t ] # l s /home
/dev/hda5 / e x t 3 d e f a u l t s 1 1
devpts / d e v / p t s d e v p t s gid=5,mode=0620 0 0
/dev/hda7 /home e x t 3 d e f a u l t s 1 2
proc / p r o c p r o c gid=19 0 0
* М е ф о д и й з а м е т и л , ч т о / tmp и / v a r н е с м о н т и р о в а н ы н и к у д а , и , с л е д о в а т е л ь н о , к о р н е в а я
файловая система, вопреки р е к о м е н д а ц и я м F H S , с л и ш к о м часто используется н а запись.
218
Лекция 11 Работа с внешними устройствами
219
Курс Операционная система Linux
220
Лекция 11 Работа с внешними устройствами