13. РУКОВОДСТВО СИСТЕМНОГО АДМИНИСТРАТОРА

В функции системного администратора системы UNIX входит

повседневное управление системой во всех аспектах ее сущест-

вования, таких как подключение новых пользователей, управле-

ние файловой системой, изменение конфигурации и других. Сле-

дует заметить, что на персональных ЭВМ эти функции могут ис-

полняться прикладным программистом.

Имеется ряд команд, расположенных обычно в каталоге /etc,

рассчитанных на управление системой, таких как fsck, mount,

chown и так далее. Как правило, каталог /etc доступен только

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

обладать правами суперпользователя.

 

13.1. Спецпользователи

Это пользователи, выполняющие действия над системой, не-

доступные обычным пользователям. Один из них, имеющий неог-

раниченные полномочия, называется суперпользователем и имеет

обычно имя root. Разные системы могут иметь и других спец-

пользователей, например, пользователя с именем bin, обладаю-

щих меньшими полномочиями, чем суперпользователь.

Имеются команды, которые может выполнить только супер-

пользователь, в частности, установка даты командой date,

монтаж файловой системы командой mount, создание специальных

файлов командой mknod и другие.

 

 

- 115 -

Стать суперпользователем можно несколькими способами.

Первый - загрузить систему в режиме единственного пользова-

теля. Другой, применяемый на многопользовательской системе -

выполнить команду su (superuser). Администратору системы ре-

комендуется входить в систему как обычному пользователю, и

только в случае необходимости становиться временно супер-

пользователем по команде su.

 

13.2. Загрузка и выключение системы

Загрузка требуется, когда на ЭВМ только что включили пи-

тание. Обычно процесс загрузки в большей или меньшей степени

автоматизирован и заключается в последовательном вызове

программ, каждая из которых загружает и запускает следующую.

Первая программа, самая простая, загружена всегда и запуска-

ется при включении питания ЭВМ автоматически или вручную.

В процессе загрузки может потребоваться ответить на воп-

росы системы, например, касающиеся устройства, на котором

находится загружаемая система. В завершение процесса загруз-

ки система выполняет командный файл /etc/rc, который, вообще

говоря, может содержать любые команды, но обычно содержит

команды для выполнения следующих действий:

- демонтаж старых файловых систем;

- монтаж новых файловых систем;

удаление старых журнальных учетных файлов;

 

 

- 116 -

- удаление временных файлов;

- запуск процессов update и cron.

Выключение многопользовательской системы производится вы-

полнением командного файла /etc/shutdown, который в типичном

случае выполняет следующие действия:

- посылает предупреждающие сообщения всем активным поль-

зователям командой wall;

- убивает все процессы, кроме процесса консоли;

- очищает все буферы обменов с файлами командой sync;

- демонтирует файловые системы;

- выполняет, если надо, процедуры копирования данных;

- выключает питание ЭВМ, если позволяет аппаратура; в

противном случае, питание выключается вручную.

 

13.3. Пользователи и группы

Имеется два файла с именами passwd и group в каталоге

/etc, которые содержат информацию о пользователях и группах

пользователей соответственно.

Одна запись в файле passwd соответствует одному пользова-

телю и имеет следующие текстовые поля, разделенные символом

двоеточия:

- имя пользователя;

- пароль пользователя (в закодированном виде);

- целочисленный идентификатор пользователя;

- целочисленный идентификатор группы;

 

 

- 117 -

- комментарий, который содержит сведения о месте работы

пользователя и может использоваться командой finger и учет-

ными программами;

- каталог пользователя;

- интерпретатор команд пользователя.

Пример записи файла passwd (с пустым комментарием):

mary:KmHu1hE:201:10::/users/mary:/bin/csh

При наличии комментария его синтаксис определяется учет-

ными программами.

Для некоторых системых программ требуется, чтобы иденти-

фикатор суперпользователя был равен нулю, а имя - root.

Одна запись в файле group соответствует одной группе и

представляет собой строку текста со следующими полями, раз-

деленными двоеточиями:

- имя группы;

- пароль группы (в закодированном виде);

- целочисленный идентификатор группы;

- список имен пользователей группы, разделенных запятыми.

Пример записи файла group (для группы без пароля):

sect2115::10:mary,sas,temp,ges

Добавление нового пользователя в системе требует выполне-

ния следующих трех действий, которые обычно реализуются ко-

мандным файлом с именем newuser или adduser:

- добавить запись в файл passwd с информацией о пользова-

теле;

- создать каталог пользователя, причем пользователь дол-

жен быть владельцем этого каталога;

 

 

- 118 -

- добавить или скорректировать запись в файле group в со-

ответствии с членством пользователя в некоторой группе.

Добавление и коррекция записей в файлах passwd и group

может выполняться текстовым редактором (если нет командного

файла newuser).

Каталог пользователя создается суперпользователем (воз-

можно, посредством скрипта newuser) и вначале принадлежит

ему. Чтобы изменить пользовательскую и групповую принадлеж-

ность каталога (и любого файла), используются команды chown

(change own) и chgrp (change group) соответственно. Их может

выполнить только суперпользователь.

Часто новый пользователь забывает свой пароль. Суперполь-

зователь может в этом случае изменить пароль пользователя

командой passwd, затерев забытый и сообщив пользователю но-

вый:

# passwd mary

New passwd : mmm

Retype new passwd : mmm

#

Вводимый пароль (здесь mmm) не виден.

 

13.4. Специальные режимы исполняемого файла

Кроме девяти режимов защиты файла имеется три дополни-

тельных режима, которые имеют смысл только для исполняемых

файлов. Эти режимы может установить только суперпользова-

тель, используя команду chmod (change mode).

 

 

- 119 -

Специальные режимы соответствуют восьмеричным значениям

4000, 2000 и 1000 первого параметра этой команды:

- 4000 - бит установки идентификатора пользователя; ука-

зывает, что, когда программа (файл) выполняется, идентифика-

тор пользователя устанавливается равным идентификатору вла-

дельца этого файла, а не пользователя, запустившего этот

файл на исполнение;

- 2000 - бит установки идентификатора группы; указывает,

что на время выполнения программы (файла) идентификатор

группы устанавливается равным идентификатору группы, соот-

ветствующему групповой принадлежности этого файла;

- 1000 - бит разделения; указывает, что выполняемая прог-

рамма (файл) разделяется многими пользователями и свопинго-

вое пространство не сбрасывается, даже если никто программу

не использует в данный момент.

Установка обоих битов идентификаторов пользователя и

группы позволяет пользователю выполнять такие программы, ко-

торые должны иметь полномочия суперпользователя (например,

программа mail создает каталог /usr/spool/mail). В противном

случае возможности системы, доступные пользователю, были бы

значительно ограничены.

 

13.5. Файловые системы

Файловая система имеет иерархическую структуру каталогов

и файлов, включая корневой каталог. Файловая система распо-

лагается на устройстве, которое является, обычно, магнитным

диском того или иного типа. Если диск достаточно велик, он

 

 

 

- 120 -

может быть разбит на несколько "логических" дисков; тогда на

каждом логическом диске может быть размещена отдельная фай-

ловая система. Каждая файловая система, прежде чем стать

доступной, должна быть смонтирована.

Количество файлов в файловой системе ограничено (65536

для UNIX, версия 7).

Каждая файловая система имеет четыре основные части:

- загрузочный блок; это самый первый блок диска (блок 0),

зарезервированный для системной загрузочной программы;

- супер-блок - это первый блок собственно файловой систе-

мы (блок 1); он содержит основные данные о файловой системе

и ее размещении на диске, в том числе о списках свободных

i-узлов и блоков;

- i-узлы - это последовательность блоков вслед за суперб-

локом; i-узел содержит ссылки на блоки; имеется ровно один

i-узел для каждого каталога или файла в файловой системе;

- блоки - оставшееся пространство диска занимают блоки,

которые содержат либо действительные данные каталогов и фай-

лов (блоки данных), либо ссылки на блоки (косвенные блоки).

Суперблок содержит следующие данные:

- размер дискового пространства, доступного файловой сис-

теме (в блоках);

- число блоков, зарегистрированных для i-узлов;

- имя файловой системы;

- имя тома;

- время последнего изменения;

 

 

- 121 -

- время последнего копирования (back up);

- ссылка на список свободных блоков;

- ссылка на список свободных i-узлов.

Структура файловой системы представлена на рис.13.1.

                            -------------     -------------
                          ------------- │   ------------- │
----------- ----------- ------------- │ │ ------------- │ │
│ Загру-  │ │         │ │           │ │ │ │           │ │ │
│ зочный  │ │Суперблок│ │   i-узлы  │ │-- │   Блоки   │ │--
│  блок   │ │         │ │           │--   │           ---
----------- ----------- -------------     -------------
               │  │
               │  │       -------------        -------------
               │  │     ------------- │      ------------- │
               │  │   ------------- │ │    ------------- │ │
               │  │   │   Список  │ │ │    │   Список  │ │ │
               │  --->│ свободных │ │--    │ свободных │ │--
               │      │  i-узлов  │--   -->│   блоков  │--
               │      -------------     │  -------------
               --------------------------

                             Рис.13.1.

 

Каждый файл (и каталог) в файловой системе представлен

i-узлом, содержащим указатели на блоки, составляющие файл.

 

 

- 122 -

В i-узле содержится также информация о правах доступа к

файлу, число ссылок на файл из каталогов и другие данные.

Структура i-узла и блоков файла для UNIX, версия 7 показана

на следующем рисунке. Каждый i-узел содержит 13 указателей.

Первые 10 указателей непосредственно ссылаются на блоки дан-

ных файла. Поскольку блок содержит 512 байтов, то этого дос-

таточно для обработки файлов до 512х10=5120 байтов.

Если длина файла больше, чем 5120 байта, используется

11-й указатель i-узла, который ссылается на косвенный блок

из 128 ссылок на блоки данных. Использование косвенного бло-

ка позволяет увеличить длину файла до величины

512х(10+128)=70656 байтов. Если и этого недостаточно, то ис-

пользуется 12-й указатель i-узла, ссылающийся на дважды кос-

венный блок, содержащий 128 ссылок на косвенные блоки

(рис.13.2). Тогда максимальный размер файла увеличивается до

величины 512х(10+128+128**2)=8459264 байтов. Наконец, ис-

пользование последнего, 13-го указателя на трижды косвенный

блок из 128 ссылок на дважды косвенные блоки, дает предель-

ную длину в файловой системе:

512х(10+128+128**2+128***3)=1082201088 байтов

(см. рис. 13.2).

Другие версии системы UNIX могут отличаться количеством

ссылок в i-узле, косвенных блоках и размером блока данных.

Когда система загружается, имеется только одна из файло-

вых систем, называемая корневой. В ней находятся все важней-

 

 

- 123 -

                           -------                     -------
    i-узел    ------------>│-----│                 --->│-----│
------------- │            │-----│               │-│   │-----│
│ Информация│ │ ---------->│-----│     --------  │ --->│-----│
│  о файле  │ │ │          │-----│  -->│ 128  │--+     │  :  │
│-----------│ │ │ -------->│-----│  │  │      │  │     │Блоки│       -------
│  1        +-- │ │        │  :  │  │  --------  │ --->│-----│   --->│-----│
│-----------│   │ │        │Блоки│  │ Косвенный  │-│   │-----│   │   │-----│
│  2        +---- │        │-----│  │   блок       --->│-----│   +-->│-----│
│-----------│     │ ------>│-----│  │                  -------   │   │  :  │
│  3        +------ │      │-----│  │                            │   │-----│
│-----------│       │ ---->│-----│  │                   -------  +-->│-----│
│  :        │       │ │    │-----│  │                   │ 128 │--│   │-----│
│  :        │       │ │ -->│-----│  │               --->-------  --->│-----│
│-----------│       │ │ │  -------  │            │--│   -------  --->│-----│
│  8        +-------- │ │  ----------            │  --->│ 128 │--│   │-----│
│-----------│         │ │  │                     │      -------  +-->│-----│
│  9        +---------- │  │                     │         .     │   │-----│
│-----------│           │  │                     │         .     │   │  :  │
│ 10        +------------  │                     │         .     +-->│-----│
│-----------│              │                     │         .     │   │-----│
│ 11        +---------------           --------  │         .     --->│-----│
│-----------│                          │ 128  │--+         .         │-----│
│ 12        +------------------------->│      │  │         .     --->│-----│
│-----------│                          --------  │         .     │   │-----│
│ 13        +----                       Дважды   │         .     +-->│-----│
-------------   │                      косвенный │         .     │   │-----│
                │                        блок    │         .     │   │  :  │
                │                       -------  │      -------  +-->│-----│
                │                   --->│-----│  │      │ 128 │--│   │-----│
                │                   │   │-----│  │  --->-------  --->│-----│
                │                   +-->│-----│  ---│                │-----│
   --------------          -------  │   │  :  │     --->------┐  --->│-----│
   │                       │ 128 │--+   │-----│         │ 128 │--│   │-----│
   │                ------>-------  +-->│-----│         -------  +-->│-----│
   │                │         .     │   │-----│                  │   │-----│
   │        ------- │         .     --->│-----│                  │   │  :  │
   │     -->│ 128 │-│         .     --->│-----│                  +-->│-----│
   │     │  ------- │         .     │   │-----│                  │   │-----│
   │     │     .    │      -------  +-->│-----│                  --->│-----│
   │     │          ------>│ 128 │--+   │-----│                      -------
   │     │     .           -------  │   │  :  │                       Блоки
   │     │                          +-->│-----│
   │     │     .                    │   │-----│
---+---  │                          --->│-----│
│ 128 │--+     .                        │-----│
-------  │                              │-----│
 Трижды  │     .                    --->│-----│
косвенный│                          │   │-----│
  блок   │     .                    +-->│-----│
         │                 -------  │   │  :  │
         │     .           │ 128 │--+   │Блоки│
         │          ------>-------  │   │-----│
         │  ------- │         .     --->│-----│
         -->│ 128 │-│         .     --->│-----│
            ------- │         .     │   │-----│
                    │      -------  +-->│-----│
                    ------>│ 128 │--+   │-----│
                           -------  │   │  :  │
                                    --->│-----│          Рис. 13.2.
                                        -------

 

- 124 -

шие каталоги (/dev,/etc, /bin и т.п.). Все остальные файло-

вые системы должны быть созданы и смонтированы.

 

13.5.1. Создание и монтаж файловой системы

Команда mkfs создает новую файловую систему. Она располо-

жена в каталоге /etc и имеет два параметра:

/etc/mkfs <имя> <размер>

Первый параметр является именем специального файла и ука-

зывает устройство, на котором создается файловая система.

Второй параметр - размер пространства файловой системы в

блоках; используется для определения по некоторым правилам

числа блоков после того, как размещены i-узлы.

Пример создания файловой системы на флоппи-диске:

/etc/mkfs /dev/flo 2000

isize = 230

Ответное сообщение указывает число блоков, выделенное для

размещения i-узлов.

Далее, чтобы сделать файловую систему известной операци-

онной системе, надо ее смонтировать командой mount. Эта ко-

манда подключает корневой каталог монтируемой файловой сис-

темы в один из каталогов корневой файловой системы. Команда

расположена в каталоге /etc и имеет два параметра:

/etc/mount <устройство> <каталог>

Первый параметр является именем спецфайла для монтируемо-

го логического устройства, содержащего подключаемую файловую

 

 

- 125 -

систему. Второй - имя уже существующего каталога, под кото-

рым монтируется файловая система.

Пример монтажа вновь созданной файловой системы на гибком

диске под каталогом, созданным командой mkdir в корне корне-

вой файловой системы:

cd /

mkdir floppy0

/etc/mount /dev/fl0 /fioppy0

Чтобы выяснить, какие файловые системы смонтированы в

данный момент, надо подать команду mount без параметров:

mount

/dev/fl0 on /floppy0

Ответом является сообщение об этих системах (в данному

случае - одной). Оно формируется на основе данных о монтаже

файловых систем, хранимых в файле /etc/mnttab.

Следует заботиться о том, чтобы права доступа корневого

каталога монтируемой файловой системы и каталога, под кото-

рым производится монтаж, были одинаковыми во избежание оши-

бок операционной системы.

 

13.5.2. Демонтаж файловой системы

Если файловая система на съемном устройстве больше не ис-

пользуется, ее можно демонтировать командой umount, располо-

женной в каталоге /etc и имеющей один параметр:

umount <устройство>

 

 

- 126 -

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

предыдущего примера выполняется командой:

umount /dev/fl0

Результатом демонтажа является разрыв связи между корне-

вым каталогом демонтируемой файловой системы и каталогом

корневой файловой системы, в котором производился монтаж.

При выполнении команды демонтажа текущий каталог должен быть

вне демонтируемой файловой системы, иначе будет выдано сооб-

щение:

umount : device busy (устройство занято)

и команда не будет выполнена.

 

13.5.3. Синхронизация файловых систем

При обменах с файлами система поддерживает в оперативной

памяти множество буферов, свободных блоков, i-узлов, а также

супер-блок. Для корректного завершения операций с системой

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

этих буферов и блоков в дисковую память. Выполнение этих

действий называется синхронизацией файловой системы и реали-

зуется командой sync:

/etc/sync

Команда не выдает никаких сообщений, а подсказка системы

говорит лишь о запуске синхронизации. Поэтому обычно команду

выполняют повторно после некоторого ожидания.

 

 

 

- 127 -

13.6. Устройства и специальные файлы

Каждому устройству соответствует часть системы, называе-

мая драйвером. Связь между устройствами и драйверами отраже-

на в каталоге /dev, вхождения которого принято называть спе-

циальными файлами, или спецфайлами. Это позволяет называть

каждое устройство именем некоторого спецфайла.

Добавление устройства в систему требует и добавления

спецфайла в каталоге /dev. Последнее реализуется командой

mknod (make node - сделать узел). Пример:

ls -l /dev

___________

crw--w--w-1 root 0 0 .....console

brw-rw-rw-1 root 5 0 .....fl0

___________

crw-w--w-1 root 18 0 .....tty0

crw-w--w-1 mary 18 1 .....tty1

/etc/mknod /dev/tty2 c 18 2

Первый аргумент команды mknod задает имя спецфайла для

подключаемого устройства. Второй аргумент указывает, являет-

ся ли устройство знакоориентированным (c) или блочным (b), в

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

аргумента называют мажорным и минорным номерами устройства.

Их значения зависят от аппаратной реализации, но, как прави-

ло, первый аргумент указывает тип устройства, а второй - ад-

рес экземпляра устройства данного типа.

 

 

 

- 128 -

13.7. Сохранение и восстановление файлов

Независимо от объема данных, в системе важно иметь регу-

лярную процедуру сохранения (копирования) файлов, чтобы

обеспечить восстановление в случае их аварийной потери.

Возможны различные способы сохранения. Наиболее распрост-

раненным является еженедельное полное копирование и ежеднев-

ное инкременантное копирование (только изменившихся со вре-

мени последнего копирования) файлов. При этом файлы копиру-

ются (сбрасываются) на специальное внешнее устройство памя-

ти, обычно магнитную ленту, однако это может быть и съемный

дисковый том, а для малых систем - гибкий диск. На этом уст-

ройстве файлы хранятся в специальном архивном формате.

Восстановление утраченных файлов производится путем их

поименного копирования из архивной ленты или тома в файловую

систему. Обычно таких файлов немного (например, один или

два).

В различных реализациях системы могут быть разные команды

сброса файлов в архив и восстановления их из архива. Это мо-

жет быть пара команд dump и restor для передачи файлов в ар-

хив и обратно соответственно. Или это может быть одна коман-

да cpio (или tcio для кассетной ленты) с опциями -0 или -i

для сброса в архив и извлечения из архива соответственно.

Наиболее мощным средством сброса в архив в некоторых реа-

лизациях служит команда backup, являющаяся командным файлом,

использующим команды типа cpio/tcio и fsck.

 

 

- 129 -

Команда backup позволяет параметрировать процедуру сброса

в архив простым редактированием ее текста, задавая следующие

параметры:

- имя каталога сбрасываемой иерархии файлов;

- имя учетного файла процедуры сброса;

- имя даты последнего сброса;

- имя файла с напоминанием смены архивной ленты (если ар-

хив не умещается на одной ленте);

- спецификация архивного устройства;

- имя учетного файла процедуры проверки файловой системы.

Наконец, для сброса на ленту или гибкий диск и обратного

восстановления применяется команда tar (tape archive). В от-

личие от некоторых перечисленных выше команд, она доступна

не только администратору системы, но и любому пользователю.

Например, чтобы сбросить все файлы текущего каталога на

гибкий диск, создавая архив впервые (опция c - create), надо

выполнить команду:

tar cf /dev/fl0 *

Опция f (file) указывает, что следующий параметр является

именем спецфайла, соответствующего архивному устройству; * -

метасимвол, показывающий, что копируются в архив все файлы.

Для просмотра содержимого архива надо употребить опцию t

(listing):

tar tf /dev/fl0

Чтобы извлечь из архива указанные файлы, надо выполнить

эту же команду с опцией x (extract). Например, для восста-

новления всех файлов, имена которых оканчиваются на people,

надо выполнить команду:

 

 

- 130 -

tar xf /dev/fl0 *people

Файлы с этими именами уже должны существовать в текущем

каталоге. В случае, если в текущем каталоге указанных файлов

нет, можно восстановить все файлы из архива в указанном ка-

талоге, например:

tar xf /dev/fl0 mary,

где mary - каталог.

 

13.8. Проверка и восстановление стуктуры файловой системы

Структура файловой системы, описанная выше в терминах

i-узлов, блоков, косвенных блоков и суперблока, может быть

нарушена и требовать восстановления. Например, при разруше-

нии информации в трижды косвенном блоке могут появиться сле-

дующие проблемы:

- некоторый блок может быть вне системы, т.е. не являться

частью файла и не быть в списке свободных блоков;

- могут появиться дубли i-узлов, т.е. описывать один и

тот же файл дважды;

- некоторый блок может одновременно быть частью файла и

быть в списке свободных блоков;

- некоторый файл может существовать, не будучи включенным

ни в один каталог.

К счастью, структура файловой системы обладает некоторой

избыточностью, позволяющей восстанавливать отдельные полом-

ки. Вот некоторые виды избыточности:

 

 

- 131 -

- блок данных, являющийся каталогом, содержит имена фай-

лов и номера i-узлов; где-то есть i-узел, соответствующий

этому каталогу, и этот i-узел должен быть каталогом, а не

обычным файлом;

- блок, включенный в список свободных блоков, теоретичес-

ки не может быть частью какого-либо файла; для проверки это-

го достаточно сканировать все i-узлы для просмотра всех бло-

ков, занятых файлами, и сканировать список свободных блоков;

- аналогично, блок, принадлежащий файлу, должен принадле-

жать только одному файлу; это легко проверить.

Эти и другие виды избыточности использует программа про-

верки файловой системы, запускаемая командой fsck (file

system check). В различных реализациях существуют разные ко-

манды проверки целостности файловой системы: icheck, dcheck,

ncheck. Однако все они в большей или меньшей степени перек-

рываются командой fsck. Типичное выполнение команды fsck

выглядит следующим образом:

/etc/fsck

** Phase 1 - Check Blocks and Sizes

** Phase 2 - Check Pathnames

** Phase 3 - Check Connectivity

** Phase 4 - Check Reference Counts

** Phase 5 - Check Free List

Из примера видно, что fsck выполняется в несколько фаз.

 

 

- 132 -

На этих фазах производится следующая работа:

- проверка целостности i-узлов (счетчик связи, тип и фор-

мат i-узла);

- проверка каталогов, указывающих на i-узлы, содержащие

ошибки;

- проверка каталогов, на которые нет ссылок;

- проверка счетчиков связей в каталога и файлах;

- проверка неверных блоков и дублированных блоков в спис-

ке свободных блоков, неиспользуемых блоков, которые должны

быть включены, но не включены в список свободных блоков, и

счетчика общего числа свободных блоков.

Команда по умолчанию всегда проверяет корневую файловую

систему: все другие файловые системы проверяются, если их

имена занесены в файл /etc/checklist.

Следующий пример показывает действия команды fsck и адми-

нистратора в случае обнаружения дубля i-узла для файла

/user/src/sys/ux; администратор принимает решение удалить

этот плохой файл, отвечая в диалоге согласием y (yes) на

вопросы команды.

 

/etc/fsck

** Phase 1 - Check blocks and sizes

528627 BAD I = 66

** Phase 2 - Check pathnames

DUP/BAD I = 66 OWNER = root MODE = 100755

 

 

- 133 -

SIZE = 78409 MTIME = Jul 16 18:45 1987

FILE = /usr/src/sys/ux

REMOVE ? y

** Phase 3 - Check connectivity

** Phase 4 - Check Reference Count

BAD/DUP I = 66 OWNER = root MODE = 100755

SIZE = 78409 MTIME = Jul 16 18:45 1987

FILE = /usr/src/sys/ux

CLEAR ? y

UNREF FILE I = 36 OWNER = root MODE = 100600

SIZE = 0 MTIME = Jul 17 09:40 1987

RECONNECT ? y

** Phase 5 - Check Frec List

157 BLK(S) MISSING

BAD FREE LIST

SALVAGE ? y

** Phase 6 - Salvage Free List

302 files 5833 blocks 371 free

 

Обратите внимание на появление шестой фазы, которой не

было при нормальном выполнении команды. На этой фазе уточня-

ется и восстанавливается список свободных блоков.

После выполнения fsck, связанного с "починкой" файловой

системы, может появиться сообщение:

***** BOOT UNIX (NO SYNC!) *****,

требующее перезагрузки системы без выполнения команды sync.

 

 

- 134 -

Если этого не сделать, работа по восстановлению списка сво-

бодных блоков будет утрачена, так как копии управляющих таб-

лиц и буфера в оперативной памяти остались старыми. Для их

обновления требуется перезагрузка без выгрузки буферов на

диск командой sync.

Необходимым условием правильной работы fsck является так-

же наличие пустого каталога /lost+found в корневом каталоге.

Если при выполнениит fsck будут найдены каталоги, на которые

никто не ссылается в проверяемой файловой системе, они будут

подключены в каталог /lost+found для дальнейшего изучения их

принадлежности.

 

13.9. Контроль использования дисковой памяти

Регулярное выполнение команды du (disk usage) позволяет

выявить пользователей, захвативших слишком много дисковой

памяти. Команда печатает число блоков, занятых каждым файлом

и каталогом в дереве, указанном именем каталога - параметром

команды. Например:

du /

Будут выведены объемы всех файлов и каталогов.

Использование команды find помогает выявить долго неис-

пользуемые файлы большого объема. Например:

find / -m time+90 -a time+90 -print

Будут показаны все файлы, к которым не обращались ни по за-

писи, ни по чтению последние 90 дней.

С помощью команды find администратор может также найти

файлы, представляющие опасность для операционной системы или

бесполезно занимающие пространство на диске, даже если место

расположения этих файлов в иерархии каталогов неизвестно.

 

 

- 135 -

Например:

find / -name danger -print

Поиск производится начиная с корневого каталога /. Ключ

-name указывает последующее имя файла danger, а ключ -print

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

Команда df (disk free) показывает число свободных блоков

всех или указанной параметром файловой системы.

Следует учитывать также, что учетные файлы (типа

/usr/lib/cronlog) могут расти неограниченно и требуют перио-

дической чистки или сброса.

 

13.10. Подключение терминалов

Все терминалы, которые могут быть подключены к системе,

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

/etc/ttys (версия 7) или /etc/inittab:

Каждому терминалу соответствует одна строка файла. Форма-

ты этих файлов сходны в том, что первый символ является циф-

рой, нулевое значение которой соответствует отключенному

(логически) терминалу, а единичное - подключенному термина-

лу. Кроме того, формат обоих файлов предусматривает наличие

имени спецфайла, соответствующего терминалу (второе поле в

/etc/inittab).

Типичная строка в /etc/inittab имеет вид (пример):

1:t3:c:/etc/getty tty13 H 0

Первое поле имеет подполя, разделенные двоеточием.

При загрузке системы последним шагом загрузки является

запуск начального процесса с номером 1, выполняющего команду

/etc/init.

 

 

 

- 136 -

Команда init перед выполнением системного стартового ко-

мандного файла /etc/rc просматривает файл etc/inittab. Для

каждой строки этого файла, начинающейся с ненулевого симво-

ла, совпадающего с состоянием начального процесса (при за-

пуске равного единице), команда init порождает второй про-

цесс в цепочке (init-getti-login-shell). Порожденный процесс

выполняет команду, указанную в четвертом подполе первого по-

ля файла /etc/inittab (в данном примере /etc/getty).

Команда getty выдает на терминал, указанный именем спец-

файла во втором поле файла /etc/inittab, содержимое файла

/etc/issue, если он существует, и вслед за этим выводит на

терминал текст подсказки из записи файла /etc/gettydefs, со-

держащем характеристики терминала (обычно login:). Затем

getty читает имя пользователя и вызывает команду login, пе-

редавая ей имя пользователя в качестве параметра.

Команда login вводит пароль пользователя и после успешной

проверки пароля выполняет команду из последнего поля записи

данного пользователя в файле /etc/passwd (обычно /bin/sh или

bin/csh), а также устанавливает в качестве текущего началь-

ный каталог пользователя, указанный в предпоследнем поле за-

писи данного пользователя в файле /etc/passwd.

Команда sh или csh командного интерпретатора выполняет

стартовые файлы с предопределенными именами (.profile для

sh; .cshrc и .login для csh), выводит подсказку и ждет ввода

очередной команды пользователя.

По окончании сеанса (подачей команды logout или ^D), а

также в случае неверного пароля управление возвращается в

 

 

 

- 137 -

команду getty, которая перезапускается повторно, если в

третьем подполе первого поля записи файла /etc/inittab для

данного терминала стоит символ с (continually); если же в

этом поле стоит пробел, то команда getty завершается.

 

13.11. Периодическое выполнение заданий

Одной из команд, выполняемых в составе системного старто-

вого командного файла /etc/rc начальным процессом, может

быть команда /etc/cron, создающая постоянный процесс, про-

буждающийся периодически каждую минуту. Этот процесс прос-

матривает записи файла /usr/lib/crontab в поисках заданий,

которые должны быть выполнены. Типичный файл crontab может

выглядеть следующим образом (пример):

cat /usr/lib/crontab

0 0 * * * /etc/backup -fsck

0,15,30,45 2-23 * * * /usr/lib/atrun

Первые пять полей записи файла crontab означают минуты

(0-59), часы (0-23), день месяца (1-31), месяц года (1-12) и

день недели (0-6, 0 - воскресенье). В каждом из этих полей

может быть значение, перечень значений, разделенных запяты-

ми, или границы интервала значений, разделенные минусом;

звездочка означает любое возможное значение. В данном приме-

ре первая запись соответствует ежедневному выполнению в пол-

ночь сброса и проверки файловой системы в течение всего го-

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

рованных командой at, каждые 15 минут с 2 часов ночи до 11

часов вечера ежедневно в течение всего года.

 

 

- 138 -

Команда at планирует выполнение командного файла интерп-

ретатора shell (shell-скрипта), указанного ее последним ар-

гументом в момент времени, заданный ее первыми аргументами.

Например:

at 2300 jun 16 scriptfile_1

Указанный файл будет выполнен в 11 часов вечера в указан-

ный день текущего года. Точность времени запуска зависит от

периода пробуждения постоянного процесса, выполняющего ко-

манду cron. Все действия процесса, выполняющего cron, фикси-

руются в учетном файле /usr/lib/cronlag, если он существует

и открыт на запись в момент выполнения команды cron.

Команду at может запустить любой пользователь, чтобы ос-

тавить задание на ночное время.

 

13.12. Работа с руководствами для пользователя

Тексты руководств для пользователей находятся в различных

подкаталогах man? каталога /usr/man, где вопросительный знак

- метасимвол, принимающий значения от 1 до 8 в соответствии

с нумерацией руководств по системе. Отдельные файлы этих

подкаталогов содержат исходные тексты отдельных руководств.

Например, подкаталог man1, содержащий файлы текстов команд,

может иметь следующий вид (фрагмент):

$ ls /usr/man/man1

_ _ _ _ _ _ _ _ _

cpio.1 grep.1 mknod.1 ren.1 test.1

_ _ _ _ _ _ _ _ _

Исходные тексты руководств хранятся в этих файлах в под-

готовленном виде для команды форматирования - nroff

 

 

- 139 -

(newrunoff). На выходе команды форматирования появится текст

в формате, пригодном для выдачи на печать или терминал. Во

многих системах текст руководства в выходном формате созда-

ется и запоминается в файлах каталога /usr/man/cat?/*, где ?

и * - метасимволы в обычном смысле, выполнением команды

catman.

Выдача руководства на терминал или печать выполняется ко-

мандой man, которая в соответствии с указанным аргументом

ищет сперва текст руководства в выходном формате и выдает

его на стандартный вывод; в противном случае, она ищет ис-

ходный текст и вызывает команду nroff, результат работы ко-

торой выдается на стандартный вывод.

Добавление новых руководств требует знания форматов для

команды nroff, работающей с пакетом man макроопределений.

 

13.13. Управление операционной системой

Средства управления операционной системой (ОС) аппарат-

но-зависимы, однако приводимое ниже описание этих средств

является довольно типичным случаем.

Операционная система хранится на дисковом томе в некото-

ром заданном формате. Для задания формата используется ко-

манда (System III - /lbin/init) инициализации тома с одним

обязательным параметром - именем спецфайла для устройства,

на котором находится инициализируемый том. Остальные необя-

зательные параметры могут указать размер логического блока -

единицы передачи данных между томом и оперативной памятью и

размер загрузочной области в байтах (при отсутствии их зна-

 

 

- 140 -

чения выбираются по умолчанию).

Каждый том имеет одну загрузочную область, содержащую це-

лое, возможно нулевое, число логических блоков. Загрузочная

область полностью находится вне какой-либо файловой системы.

Изменение ее размера возможно только путем переинициализации

тома.

Каждая загрузочная область может содержать только одну ОС

(или часть одной ОС).

ОС состоит из последовательности кодовых сегментов, рас-

положенных в загрузочной области одного или нескольких то-

мов, причем граница между томами может быть внутри некоторо-

го сегмента. ОС хранится в загрузочном формате.

Помимо загрузочной области, ОС может располагаться также

в ряде обычных файлов, каждый из которых содержит целое чис-

ло кодовых сегментов, заканчивающихся двумя нулевыми байта-

ми. Этот формат не является загрузочным, однако он может

быть преобразован в загрузочный командой (System III -

/lbin/oscp).

Содержимое загрузочной области в действительности состоит

из одного или нескольких ОС-файлов. Каждый ОС-файл начинает-

ся с заголовка, содержащего флаг загружаемости, номер тома,

число томов, занятых операционной системой. Системный заг-

рузчик загружает ОС-файл только в том случае, если флаг ус-

тановлен в состояние загружаемости. Установку состояния фла-

гов ОС-файлов можно выполнить специальной командой (System

 

 

 

- 141 -

III - /lbin/osmark) с параметром, указывающим имя спецфайла

для устройства, на которое поставлен том с загрузочной об-

ластью. Ключ в этой команде устанавливает флаг в соcтояние

загружаемости или незагружаемости.

Упомянутая выше команда /lbin/oscp (System III) позволяет

выполнить следующие работы по копированию сегментов ОС:

- копировать ОС из одной (или более) загрузочных областей

тома (томов) в загрузочную область другого тома;

- копировать ОС из обычных файлов в ОС-файлы для создания

(опция -m, merge) или модификации (опция -a, add) ОС в заг-

рузочной области;

- копировать ОС-файлы в обычные файлы для разделения ОС

на части (опция -s, split) или в один обычный файл (опция

-f).

Для проверки целостности ОС в загрузочной области, а так-

же для контроля добавленных сегментов можно выполнить коман-

ду lbin/osck (System III), например:

osck -v /dev/rhd

Опция -v вызывает печать списка имен всех сегментов ОС.

Команда проверяет корректность:

 

 

- 142 -

- заголовков ОС-файлов;

- списка сегментов;

- контрольной суммы каждого сегмента.

Первоначальная установка ОС или части ОС выполняется ко-

мандой optinstall, а модификация версии ОС - командой

optupdate. Эти команды следует выполнять в однопользователь-

ском режиме и завершать перегрузкой системы. Данные для ус-

тановки или модификации версии ОС расположены на дистрибу-

тивном томе (обычно кассетная лента или гибкий диск). Пара-

метром обеих команд является имя (номер) устанавливаемого

или модифицируемого программного продукта.

Наконец, имеется возможность загружать несколько разных

ОС (или версий одной ОС), используя одну загрузочную область

на системном диске (/dev/rhd). Это выполняет команда

/lbin/chsys (change system), являющаяся командным файлом.

Внутри командного файла chsys используются команды oscp для

перестройки загрузочной области для новой ОС чтением ее сег-

ментов из обычных файлов, osck для последующей проверки заг-

рузочной области. Так как chsys не проверяет, все ли пользо-

ватели закончили работу, рекомендуется перед ее выполнением

выполнить команду shutdown.

 

 

 

- 143 -

13.14. Реконфигурация операционной системы

Параметрируемость операционной системы позволяет опти-

мальным образом настроить ее для работы на заданных аппарат-

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

для заданного класса задач.

Совокупность значений технических параметров ОС в загру-

зочной области называют конфигурацией ОС. Для управления

конфигурацией имеется команда: /lbin/uconfig (System III).

Ее необязательный параметр указывает спецфайл устройства, на

котором находится загрузочная область (по умолчанию

/dev/rhd).

Будучи поданной без опций, команда uconfig показывает те-

кущее значение параметров. Опция -f <имя файла> позволяет

установить новые значения нескольких или всех параметров из

указанного файла, а опция -d (default) устанавливает всем

параметрам значения по умолчанию, используя файл

/etc/uconfigtab.

Системными параметрами являются (в скобках - значения по

умолчанию):

- устройство виртуальной памяти (системный диск);

- размер буфера КЭШ-памяти (1024 байта);

- число буферов КЭШ-памяти (0; вычисляется динамически);

- длина цепочки буферов чтения (0; вычисляется динамичес-

ки);

 

 

- 144 -

- время активности процесса после интерактивного чтения;

- время резидентности сегмента в памяти перед свопингом

на диск (0; вычисляется динамически);

- размер страницы (1024 байта);

- время резидентности страницы в памяти перед свопингом

на диск;

- максимальный размер страничного пула виртуальной памяти

(0; вычисляется динамически);

- число страниц буфера дисплея, где страница равна 24

строкам дисплея;

- максимальный размер стэковой памяти (0; вычисляется ди-

намически);

- минимальная доля страниц в рабочем множестве страниц;

- максимальное число процессов одного пользователя (500).

При выполнении команды uconfig для изменения системных

параметров надо быть уверенным, что ОС в загрузочной области

совпадает с текущей ОС. В противном случае, результаты вы-

полнения команды будут непредсказуемы.

 

13.15. Практические советы

Прочитав эту главу, Вы можете попробовать стать админист-

ратором системы UNIX. Основные необходимые средства для под-

держания целостности системы Вам теперь известны. Не забы-

вайте регулярно делать копии системы и чистить лишние файлы.

Основной проблемой будут Ваши взаимоотношения с другими

пользователями. Опытный администратор в максимальной степени

уступает требованиям других пользователей, чтобы пользовате-

ли не могли выйти за пределы отведенных им ресурсов. Допол-

нительные сведения Вы можете найти в книге [12].