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

Введение в системное администрирование Unix. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
/etc/inittab и обнаруживает строку initdefault 3 - она
заставляет его "перейти" на уровень 3.
Run Command - стандартные RC-каталоги запуска
Перейдя на уровень выполнения 3, init и отрабатывает первую встретившуюся строчку с уровнем "3" - запускается командный файл
/etc/rc2 - загляните в него. Там все просто: /etc/rc2 берет и
выполняет командные файлы /etc/rc2.d/S*, лежащие в каталоге
/etc/rc2.d. Каждый файл выполняется с параметром "start"
Отработав /etc/rc2, init точно таким же образом запускает файл
/etc/rc3. Вслед за этим он запускает несколько процессов sysmonitor - по одному на каждый имеющийся терминал. Это те
самые процессы, которые говорят на терминал: "Login: " Пользователь, войдя на терминал, некоторое время работает, но как только он "уходит" из системы, на указанном терминале ничего не остается. init тут же выполняет действие "respawn" - перезапускает на терминал
sysmonitor - и опять жизнерадостное "Login: " появляется на
терминале.
Linux Slackware
По умолчанию init устанавливает уровень выполнения 5. При начальной загрузке отрабатывается файл
/etc/rc.d/rc.S
Затем для перехода в многопользовательский режим
/etc/rc.d/rc.M
из которого запускаются файлы
/etc/rc.d/rc.inet1 устанавливающий сетевые интерфейсы /etc/rc.d/rc.inet2 запускающий сетевые сервисы /etc/rc.d/rc.local запускающий несколько полезных программ и
Введение в системное администрирование UnixМ.Е. Мошков
51
демонов - например, поддержка мыши, httpd, русификация консоли и т.п.
Linux RedHat
Используется стандартная технология rc-файлов System V
RC-каталоги:
/etc/rc.d/rc[0123456].d/ /etc/rc.d/init.d/
Конфигурационные параметры для RC-команд:
/etc/sysconfig/
HP-UX 10.20
Не смотря на BSD-евое происхождение, используется стандартная технология rc-файлов System V
RC-каталоги:
/sbin/rc[0123].d/ /sbin/init.d/
Конфигурационные параметры для RC-команд:
/etc/rc.defaults.d/
SVR4: SUN, Motorola
Используется стандартная технология rc-файлов System V
RC-каталоги:
/etc/rc[0123456].d/
Введение в системное администрирование UnixМ.Е. Мошков
52
/etc/init.d/
Unix, базовые принципы и особенности
Все системные действия выполняет ядро операционной системы Unix. Ядро - обычный выполняемый файл, расположен в файле /unix или
/stand/unix или /vmunix или /vmlinuz (в зависимости от
конкретной реализации). Можете посмотреть размер этого файла - не маленький. При начальной загрузке системы ядро целиком загружается в оперативнную память и в дальнейшем резидентно находится в ней, выполняя все необходимые работы.
Что входит в ядро.
ДРАЙВЕРЫ УСТРОЙСТВ. И тех, которые есть, и тех, которых нет, но могут быть, а также и такие, которые никогда вам не понадобятся. УПРАВЛЯЮЩИЕ ПОДПРОГРАММЫ: части кода, ответственные за обеспечение работы пользовательских программ - разделение времени и прочих ресурсов системы. СЛУЖЕБНЫЕ ТАБЛИЦЫ И ДАННЫЕ ЯДРА: таблицы текущих процессов, открытых файлов, управляющие структуры... СИСТЕМНЫЕ ВЫЗОВЫ. (То, что MS-DOS называется "21 прерывание", можно считать некоторой аналогией/пародией на системные вызовы.) С точки зрения программиста это обычная си-шная функция, только выполняет она системно-зависимые действия, например: прочитать данные из файла, установить сетевое соединение, создать каталог, и т.д. и т.п. Все системные вызовы (а всего их более 1500 штук) вкомпилированы в тело ядра Unix. Пользовательские программы, вызывающие функции, являющиеся системными вызовами, на самом деле содержат только jump'ы на соответствующие адреса памяти в ядре. В пользовательскую программу системные вызовы не влинковываются.
Что находится в оперативной памяти.
ЯДРО ОПЕРАЦИОННОЙ СИСТЕМЫ.
Введение в системное администрирование UnixМ.Е. Мошков
53
БУФЕРНЫЙ КЭШ. Часть оперативной памяти резервируется под кэширование чтения и записи на диск. Любая операция чтения с диска приводит к тому, что прочитанные блоки помещаются в буферный кэш, а из него уже передаются запросившим данные программам. Если блок попал в кэш, то все последующие обращения к нему будут получать образ блока из кэша, причем независимо от того - та же самая программа обращается к блоку или какая-либо другая. Кэшируется также и запись на диск, опять же, разделяемая между всеми выполняемыми программами. ПРОЦЕССЫ. Процессом в Unix называется выполняющаяся программа.
Средства экономии памяти. Виртуальная память.
РЕЕНТЕРАБЕЛЬНОСТЬ КОДА. Когда одна и та же программа (выполняемый файл) запущена в нескольких экземплярах, то в оперативную память загружается только одна копия выполняемого ассемблерного кода на всех. Каждый выполнямый процесс использует один и тот же текст программы, просто у каждого процесса имеется свой собственный указатель на текущий оператор. РАЗДЕЛЯЕМЫЕ БИБЛИОТЕКИ. (В Windows есть похожее понятие DLL - динамически подгружаемая библиотека). Некоторое количество часто выполняемых функций (например, printf, да и много других) оформляется в виде специальным образом подготовленной библиотеки (SHARED LIBRARY). При компиляции программы, использующей разделяемые библиотеки, эти функции не линкуются внутрь кода программы. Они "выдергиваются" из библиотеки на стадии выполнения программы. Этим мы экономим место на диске и в оперативной памяти: в программах отсутствует код разделяемых функций, а в оперативной памяти эта функция присутствует в одном экземпляре на всех. SWAPPING. Каждый Unix-процесс функционирует в своем собственном 32-х битном виртуальном адресном пространстве, не пересекающемся с другими. Адресное пространство процесса может быть большим, чем физическая оперативная память. Виртуальная память поддерживается с помощью PAGING'а ­разрешения виртуальных адресов в физические "на лету", с
Введение в системное администрирование UnixМ.Е. Мошков
54
подкачкой отсутствующих страниц памяти со swap-области на жестком диске.
На самом деле SWAPPING'а как такового в Unix'е нет, вместо него применяется гораздо более гибкий PAGING. (swapping - по определению, это ПОЛНАЯ выгрузка программы на swap-область с целью освобождения места в оперативной памяти).
Область памяти, занятая программой, разделена на три части: TEXT (выполняемые коды программы), DATA (статические данные программы), STACK (динамические данные). Когда операционка освобождает место в памяти за счет TEXT'а, то она не занимается сбросом его на диск. Она сразу помечает его как свободный. Действительно, когда потребуется загрузить TEXT обратно в память, его можно будет взять из самого выполняемого файла с программой. Такая экономия имеет один побочный эффект. Файл программы, которая в данный момент выполняется, невозможно уничтожить. Операционная система сообщит в этом случае: "text file busy", и откажется выполнять удаление.
БИТ НАВЯЗЧИВОСТИ. (sticky bit). Выполняемая программа может иметь дополнительный атрибут. Так называемый "бит навязчивости". Когда такая программа заканчивает выполнение, операционка (по возможности) старается не занимать память, в которой находился текст программы. Соответственно, повторный ее запуск произойдет очень быстро - ведь программа все еще загружена в память, ее не требуется зачитывать с диска. Нужно просто передать на нее управление.
Файловая система Unix
Файловая система в Unix - "деревянная", состоит из файлов и каталогов. На каждом разделе диска создается собственная независимая файловая система. Отдельные файловые системы "сцепляются" вместе, в единое общее дерево директорий. Такая операция называется "монтированием". Выглядит это примерно так:
mount -t ufs /dev/dsk/m197_c0d0s5 /home1 mount -t ufs /dev/dsk/m197_c0d0s4 /usr
Введение в системное администрирование UnixМ.Е. Мошков
55
df
Получить доступ к файлам "несмонтированной" файловой системы невозможно. Порочная практика MS-DOSа - сколько разделов, столько и "дисков" (a: b: c: d: e: ... k: l: m: n:) в Unix не применяется. В Unix всегда есть ровно одно общее дерево каталогов, и, по большому счету, пользователям совершенно все равно, на каком именно диске или разделе диска расположены его файлы /usr/spool/moshkow или
/home1/moshkow/bin/mcopy...
Файловая система Unix кэшируется буферным кэшем. Операция записи на диск выполняется не тогда, когда это приказывает выполняемый процесс, а когда операционная система сочтет нужным это сделать. Это резко поднимает эффективность и скорость работы с диском, и повышает опасность ее использования. Выключение питания на "горячей", работающей Unix-машине приводит к разрушениям структуры файловой системы.
При каждой начальной загрузке Unix проверяет - корректно ли была выключена машина в прошлый раз, и если нет - автоматически запускает утилиту fsck (File System Check) - проверку и ремонт файловых систем..
Внутренняя структура файловой системы Unix
Раздел диска, в котором создана файловая система, разбит на три части.
СУПЕРБЛОК. Занимает 1 Kb.
Содержит служебную информацию: Тип файловой системы, Размер Начало списка свободных блоков. . . . что-то еще
ОБЛАСТЬ INOD-ов. Занимает примерно 8% общего размера раздела.
inode - Index-node - описатель файла. Он содержит всю информацию о
файле, за исключением имени файла, и собственно данных файла. В
inod 'е хранится:
Введение в системное администрирование UnixМ.Е. Мошков
56
тип файла (файл, каталог, именованный канал, специальный файл) кто владелец права(атрибуты) файла время модификаци/создания файла адреса блоков, из которых состоит файл что-то еще ...
ОБЛАСТЬ ДАННЫХ. В этой области расположены ВИРТУАЛЬНЫЕ блоки с данными файлов. Незанятые блоки провязаны в СПИСОК СВОБОДНЫХ БЛОКОВ
Файлы бывают двух основных типов. ФАЙЛ, КАТАЛОГ.
ФАЙЛ - он и есть файл. КАТАЛОГ - файл фиксированного формата: состоит из строчек с именами файлов, входящих в каталог
имя_файла1 Номер_Инода1 имя_файла2 Номер_Инода2 . . .
Чтобы получить доступ к файлу по имени, операционная система
находит это имя в каталоге, содержащем файл, берет Номер_Инода файла, по номеру находит inod в области inod 'ов, из inod 'а берет адреса блоков, в которых расположены данные файла, по адресам блоков считывает блоки из области данных.
Все.
Формат индексного описателя файла.
Область инодов разбита на 64-х байтные структуры - inod 'ы. В inod 'е хранится:
Тип файла (файл/каталог/специальный файл/fifo/socket) Атрибуты (права доступа)
Введение в системное администрирование UnixМ.Е. Мошков
57
Владелец файла Группа-владелец файла Времена создания, модификации, последнего доступа к файлу Длина файла Адрес 1-го блока файла Адрес 2-го блока файла ... Адрес 10-го блока файла Адрес блока косвенной адресации (блока с 256 адресами блоков) Адрес блока 2-й косвенной адресации (блока с 256 адресами блоков с адресами) Адрес блока 3-й косвенной адресации (блока с адресами блоков с адресами блоков с адресами)
Точный формат структуры файловой системы см. man fs
Специальные файлы
В Unix помимо обычных файлов и каталогов существуют еще и специальные файлы. Они используются для обозначения физических устройств компьютера. (Железок). В сущности, что такое файл? Это "нечто", куда можно записывать данные как последовательность байтов и считывать их оттуда. И, значит, вполне естественным выглядит, например, файл /dev/console - соответствующий консольному терминалу. Все, что выводится в файл /dev/console, будет просто появляться на экране терминала. При попытке чтения из файла
/dev/console вы будете получать (внимание!) не то, что нарисовано
в данный момент на экране, а то, что вводится с клавиатуры. Попробуйте выполнить команды
su echo Привет > /dev/console cat /dev/console
Ctrl-C
Для каждого терминала unix-машины существует соответствующий ему файл. Обычным терминалам соответствуют файлы, которые называются примерно так:
Введение в системное администрирование UnixМ.Е. Мошков
58
/dev/contty01 или /dev/tty02 или /dev/ttyFD02 или /dev/ttyS0 (и т.д., возможны варианты)
Псевдотерминалам (они эмулируются, когда вы входите в систему по сети, посредством команд типа telnet, rlogin ) соответствуют специальные файлы
/dev/pty*, или /dev/pty/*
Команда who, или who am i сообщит вам, как называется ваш собственный терминал.
Существуют специальные файлы, соответствующие жесткому диску в целом ( /dev/rdsk/m197_c0d0s7 ) и всем его разделам (
/dev/dsk/m197_c0d0s* ). Если вы будете читать из этих файлов,
то получите все байтики, как они лежат на жестком диске, с нулевого цилиндра и до последнего... А если вы в этот файл что-нибудь запишете, то получите (потом) богатый опыт по переформатированию и разметке жесткого диска.
/dev/mem - файл, изображающий оперативную память. /dev/audio - если "закатить" в него файл звукового формата
(*.wav, *.au, ...?) - то он будет озвучен динамиком компьютера, а команда cat /dev/audio будет принимать все, что произносится в микрофон. Впрочем, я отвлекся, у нас ведь не PC, не Silicon Graphic и не SPARCstation.
/dev/zero - из него можно считать сколько угодно нулевых
байтов
/dev/null - а в него можно писать, и читать из него - тоже, в
неограниченных количествах и с неизменным результатом: NULL
- он и есть null. А в MSDOS его аналог называется NUL.
Специальные файлы бывают двух типов:
блочные - запись и чтение допускаются только блоками. Например, разделы дисков с файловой системой являются таковыми.
ls -al /dev/fd*
Введение в системное администрирование UnixМ.Е. Мошков
59
brw-rw---- 1 root floppy 2, 28 Jul 18 1994 /dev/fd0H1440 brw-rw---- 1 root floppy 2, 32 Jul 18 1994 /dev/fd0H2880 brw-rw---- 1 root floppy 2, 12 Jul 18 1994 /dev/fd0H360
символьные(бесструктурные, сырые, row) - можно читать и писать отдельными байтами. К ним относятся терминалы, магнитные ленты, неформатированные диски и разделы дисков без файловой системы.
ls -al /dev/tty* crw--w--w- 1 moshkow sys 4, 1 Jan 15 22:00 /dev/tty1 crw--w--w- 1 root root 4, 2 Jan 15 20:37 /dev/tty2 crw--w--w- 1 root root 4, 2 Jan 15 20:37 /dev/tty2
Различие - первая буква в листинге команды ls -l
Понятия "размер" у специального файла не существует. Ведь этот файл обозначает физическое устройство. Фактически это ссылка на соответствующий драйвер. Вместо длины команда ls показывает для таких файлов два числа: "мажорный" и "минорный" номера устройств. Будем считать для ясности, что "мажор" - это порядковый номер драйвера устройства, а "минор" - внутренний номер устройства в таблице обслуживающего его драйвера.
Создание специальных файлов
Обычно их создавать не нужно - они все уже есть для всех известных настоящих и будущих устройств. Созданы при инсталляции системы.
Ручное создание спецфайла
mknod /dev/filename { c | b } MAJOR MINOR
HP-UX: полуавтоматическое создание спецфайлов
При начальной загрузке в /etc/inittab отрабатывает скрипт
/sbin/ioinitrc, который, обнаружив новые платы и устройства,
автоматически запускает команду их инициализации, конфигурации и
Введение в системное администрирование UnixМ.Е. Мошков
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]