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

Ктитров Администрирование ОЦ УНИХ 2007

.pdf
Скачиваний:
34
Добавлен:
16.08.2013
Размер:
864.18 Кб
Скачать

largefiles – поддержка файлов размером более 2 Гбайт proto=... – используемый протокол (tcp или udp), rsize=... wsize=... – размер буферов чтения/записи, retry=... – число попыток монтирования,

quota включить поддержку пользовательских квот.

Пример

mount -F nfs -o rw,soft,quota moon:/pub /moon/pub

В примере экспортируемый машиной moon каталог /pub монтируется в каталог /moon/pub. Для автоматического монтирования можно добавить строку в /etc/vfstab.

Пример файла /etc/vfstab (фрагмент)

#device

device

mount

FS

fsck

mount mount

#to mount

to fsck

point

type

pass

at boot opt

moon:/pub

- /moon/pub nfs

 

- yes rw,soft,quota

Программа

nfsstat

может

быть

использована для

отображения статистической информации, касающейся NFS.

5.12. Создание резервных копий

Надежность аппаратной платформы, применение RAID массивов, журналируемых файловых систем позволяет практически полностью защититься от аппаратного сбоя. Но при этом всегда остается вероятность ошибки оператора, который случайно удалил важные файлы. Именно для защиты от таких угроз следует выполнять резервное копирование важных данных. В состав ОС Solaris входит набор важных утилит, с помощью которых администратор может выполнить резервное копирование (табл.5.7)

Программа ufsdump предназначена для многоуровневого ин-

крементального резервного копирования. Предусмотрены уровни от 0 до 9, 0 означает полное копирование.

51

 

Таблица 5.7

Команда

Описание

 

 

ufsdump

Создание резервной копии файловой системы UFS

ufsre-

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

store

вой системы UFS

tar

Создание архива каталога

cpio

То же

ddДвоичное копирование. Может работать со специальными файлами

Пример: создание резервной копии файловой системы /dev/dsk/c0t0d0s7 на внешнем сервере 192.168.12.1 в каталоге /space/tmp и восстановление данных с резервной копии

- проверяем ФС на наличие ошибок

umount

/dev/dsk/c0t0d0s7

fsck

/dev/rdsk/c0t0d0s7

- создаем резервную копию на удаленном сервере

mkdir

/export/test

mount

–F

nfs 192.168.12.1:/space/tmp /ex-

port/test

0f /export/test/mydump

ufsdump

- создаем новую ФС в разделе /dev/dsk/c0t0d0s7

newfs

/dev/dsk/c0t0d0s7

fsck

/dev/dsk/c0t0d0s7

-подключаем новую ФС

mount

-F

/dev/dsk/c0t0d0s7 /export/home

- восстанавливаем данные

cd /export/home

ufsrestore rvf /export/test/mydump

52

Упражнения

1.Определите, какие файловые системы в данный момент подключены.

2.Определите, сколько свободного места находится в файловой системе /. Сколько места занимает каталог /var ?

3.Создайте каталог /work_new. Подключите в данный каталог файловую систему …(спросить преподавателя)

4.С какими параметрами подключилась файловая система? Сколько места на подключенной файловой системе?

5.Отключите файловую систему. Удалите каталог /work_new.

6.Разбейте оставшееся свободное место на диске на 2 части. На одной из них создайте файловую систему с параметрами по умолчанию.

7.Смонтируйте новую файловую систему. Убедитесь в возможности чтения и записи. Размонтируйте файловую систему. Смонтируйте ее в непустой каталог. Размонтируйте. Оцените доступность данных.

8.Перезагрузите систему. Определите, какие системы в настоящий момент смонтированы. Сравните с файлом автоматического монтирования.

9.Как сделать, чтобы созданная Вами система монтировалась при старте? Укажите два способа решения задачи.

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

11.Cмонтируйте файловую систему с опцией remount и опцией ro. Как проверить, что изменения вступили в силу?

12.Смонтируйте файловую систему с различными опциями, запрещающими запись, исполнение SUID программ и т.п. Убедитесь в том, что опции «работают».

13.Удалите созданную Вами файловую систему. Создайте на ее месте другую с параметрами, отличными от параметров по умолчанию.

53

14.Создайте файловую систему с малым количеством индексных дескрипторов. Добейтесь переполнения таблицы дескрипторов.

15.Попытайтесь демонтировать «занятую» файловую систему. Смоделируйте состояние занятости по разным причинам и определите причины невозможности нормального размонтирования.

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

17.С использованием сетевой файловой системы экспортируйте несколько каталогов системы.

18.Смонтируйте экспортируемые каталоги соседних машин. Автоматически монтируйте их при старте системы. Рассмотрите несколько вариантов опций монтирования.

19.Определите заполненность файловых систем.

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

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

22.Проверьте файловые системы на ошибки.

23.Создайте область виртуальной памяти в виде файла и в виде устройства (на оставшемся свободном месте) с автоматическим включением их при старте системы.

24.Установите файловые квоты пользователям. Перестройте информацию о квотах на основе уже созданных файлов.

25.Установите квоты в нескольких файловых системах одновременно.

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

27.Установите все виды квот. Проверьте, как система реагирует на их превышение. Исследуйте превышение мягкой квоты.

54

28.Создайте пользователя и назначьте квоты по образцу. Затем запросите информацию о квотах для данного пользователя. Измените квоты пользователя.

29.Создайте полную резервную копию домашних каталогов пользователей. Внесите изменения от имени различных пользователей. Создайте инкрементные копии.

30.Удалите содержимое домашних каталогов и восстановите его из резервных копий. Обратите внимание на изменения, вносимые при восстановлении из инкрементных копий. Проверьте, сохранились ли права доступа к файлам и их владельцы, включая ACL.

31.Осуществите резервное копирование домашних каталогов. Затем удалите пользователя. Восстановите данные. Что случилось с файлами удаленного пользователя?

32.Восстановите из резервных копий данные только одного пользователя.

33.С использованием tar создайте архив домашних каталогов. Восстановите данные пользователей (всех, одного выбранного, отдельные файлы). Сохранились ли права доступа, ACL?

34.Разделите полученный архив на несколько частей. Соедините их. Проверьте целостность архива.

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

55

Практическое занятие № 6

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

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

6.1. Наблюдение за процессами

Команды, позволяющие осуществлять наблюдение за процессами, приведены в табл.6.1.

 

Таблица 6.1

ps

Информация об активных процессах

pgrep

Поиск процессов по заданному шаблону, выводит

 

список PID и командную строку, запустившую про-

 

цесс (исполняемый файл)

prstat

Информация о системных процессах

time

Определение времени работы запущенного процесса

timex

 

6.2. Способы управления процессами

Управление процессами можно осуществлять путем задания переменных среды (окружения), запуска процесса в фоновом или активной режиме, планирования работ в системе, а также задавая приоритет выполнения процесса (для фоновых процессов). Управление процессами также осуществляется посредством передачи сигналов.

6.2.1. Задание переменных среды

Переменные среды (окружения) определяют среду выполнения процесса. Экспорт переменной в среду осуществляется командой

56

export. Просмотр переменных среды и их значений команда env.

6.2.2. Запуск процессов в фоновом режиме

Для запуска процесса в фоновом режиме нужно поставить значок & в конце командной строки. При завершении сеанса пользователя, запустившего фоновый процесс с помощью &,

последний также завершается.

Запуск процесса с помощью команды nohup позволяет “защитить” фоновый процесс от выхода пользователя из системы.

6.2.3. Планирование процесса (назначение приоритета)

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

Процесс в UNIX имеет два ассоциированных с ним значения приоритета – запрошенный приоритет относительно других процессов (NI) и приоритет, присваиваемый процессу ОС (PRI). Про-

цессу по умолчанию присваивается NI, равный NI его родительского процесса. Доступны значения приоритетов от –20 (самый высокий) до +20 (самый низкий). Процессы пользователя могут иметь приоритет от 0 до +20. Команды, позволяющие задавать приоритет процесса, приведены в табл.6.2.

Таблица 6.2

nice

Запуск процесса с заданным приоритетом

renice

Изменение приоритета процесса

priocntl

Изменение приоритета процесса

Примеры

Повышение приоритета процесса nice -5 my_command

57

Изменение приоритета процесса renice -n 5 -p 8200

priocntl -s -p -5 -i pid 8200 для процесса 8200 priocntl -e -c TS -p -10 myfavoriteprogram запуск программы на выполнение

6.2.4. Сигналы

Сигналы являются простейшей формой межпроцессного взаимодействия. Сигнал может быть отправлен процессу либо ядром, либо другим процессом с помощью системного вызова kill().

Символьные имена сигналов и их расшифровку можно найти в файле <signal.h>. Для отправки сигналов используются ко-

манды kill, pkill.

Пример

pkill -9 my_prog

Если сигнал не задан, то по умолчанию посылается SIGTERM.

Пример

my_program &

kill $! (переменная $! содержит PID последнего запущенного процесса,

по умолчанию посылается SIGTERM)

При получении сигнала процесс может действовать тремя способами:

- проигнорировать сигнал (trap “ “ сигнал)

-выполнить действия по умолчанию (trap сигнал)

-перехватить и обработать сигнал (trap команда сигнал) Сигналы SIGKILL, SIGSTOP нельзя ни перехватить, ни проигнорировать.

6.2.5. Планирование работ

Неинтерактивный запуск процессов осуществляется сервисом cron и командами at, batch.

58

Для запуска по заданному расписанию используется сервис cron. Демон cron планирует системные события в соответствии с командами, заданными в файле crontab. Для доступа к файлу конфигурации используется программа crontab.

Формат файла crontab :

минута час день_месяца месяц день_недели команда

Пример

0 1 5,20 * * BackUpProcess > /dev/console

Сервисом cron могут пользоваться только указанные в файле cron.allow или не указанные в cron.deny пользователи.

Для однократного запуска программы в указанное время служит команда at, причем право её использования определяют файлы at.allow и at.deny (аналогично cron).

Пример

at 07:45am today who>/tmp/log at 5pm today + 4 days

команды

^D

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

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

Пример batch

mylongcalculation ^D

59

Упражнения

1.Запустите терминал. Определите PID процесса, который ассоциируется с запущенным терминалом.

2.Запустите другой терминал. Остановите первый запущенный терминал, послав ему сигнал STOP.

3.Убедитесь, что первый терминал действительно остановлен.

4.Сделайте так, чтобы остановленный терминал продолжил свою работу (пошлите ему сигнал CONT).

5.Напишите shell-программу, выполняющую бесконечный цикл, одну итерацию в секунду. Запустите ее в фоновом режиме. Остановите программу.

6.Напишите программу, которая выдает в бесконечном цикле сообщение, заданное как аргумент. Как остановить такую программу?

7.Запустите программу из предыдущей задачи с пониженным приоритетом. Как повысить ее приоритет? Как запустить несколько таких программ одной командной строкой? Как переключаться между ними? Остановите запущенные Вами программы.

8.Запустите вновь программу из задачи 5 в фоновом режиме и завершите сеанс. Вновь зарегистрируйтесь. Работает ли Ваша программа? Сделайте так, чтобы запущенная Вами в фоновом режиме программа продолжала работать после Вашего выхода из системы.

9.Напишите программу, которая сообщает имя переданного ей сигнала и записывает его в файл с указанием времени события.

10.Напишите программу manager, которая запускает две другие

написанные Вами программы с разными приоритетами. Эти программы должны периодически добавлять в файлы некоторую информацию разного объема. При превышении заданного объема одним из файлов manager прекращает выполнение обеих программ

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

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

60