Ктитров Администрирование ОЦ УНИХ 2007
.pdflargefiles – поддержка файлов размером более 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