Обзор ограничений дискового пространства для пользователей в UNIX (лекция 4)

1.

ОБЗОР ОГРАНИЧЕНИЙ ДИСКОВОГО ПРОСТРАНСТВА ДЛЯ ПОЛЬЗОВАТЕЛЕЙ
Команда quota позволяет просмотреть любые ограничения дискового пространства для каждого
пользователя.
Доступны два типа ограничений, которые могут быть наложены на пользователя, обычно если
используется одно из ограничений то и второе тоже будет использоваться. Ограничение может быть
установлено как на все дисковое пространство пользователя, которое используется этим
пользователем так и на число файлов (inodes) которыми он может владеть. Quota обеспечивает
информацию по ограничениям, которые были установлены системным администратором, на каждую
из областей, которые используются в данный момент. Ограничения по inodes и block накладываются
как на uid (идентификатор пользователя) так и на gid (идентификатор группы). Так если вы входите в
группу, которая превысила, наложенное на нее ограничение, то вы не сможете использовать дисковое
пространство, даже если вы все еще можете использовать его как пользователь.
Существуют четыре числа для каждого ограничения:
- используемое в данное время ограничение;
- "мягкое" ограничение (softlimit);
- "жесткое" ограничение (hardlimit);
- и промежуток времени, после истечения которого "мягкое" ограничение интерпретируется как
"жесткое";
"Мягкое" ограничение определяет число блоков размером 1Кбайт, которое пользователь is expected
to remain below. "Жесткое" ограничение не может быть превышено. Если пользователь пытается
превысить данное число, то он получает сообщение о невозможности сделать это. При этом ядро
возвращает код ошибки EDQUOT.

2.

НАСТРОЙКА СИСТЕМЫ ОГРАНИЧЕНИЙ ДИСКОВОГО ПРОСТРАНСТВА.
Для того чтобы установить систему ограничений дискового пространства (quota) в ОС Linux
системному администратору необходимо сделать следующие действия:
* Произвести конфигурацию ядра системы;
* Выбрать файловую систему, на которую будут накладываться ограничения;
* Разрешить (включить) систему ограничений;
* Произвести проверку файловой системы на ограничения дискового пространства;
* Произвести проверку ограничений дискового пространства, как для пользователей, так и для
групп;
* Запретить ограничения для пользователей и групп;
* Ограничения на NFS файловой системе.
Конфигурация ядра
Перед использованием системы ограничений дискового пространства
необходимо
скомпилировать новое ядро с поддержкой данной системы. Это достигается с помощью выбора
опции quota support в разделе filesystem при конфигурировании ядра. (Если вы хотите так же
что бы система ограничений дискового пространства работала и с сервером samba, то вам
необходимо скомпиировать данный сервер с поддержкой quota). После конфигурирования
ядра вам необходимо произвести компиляцию ядра.

3.

Выбор файловой системы, на которую будут накладываться ограничения
После того как собрано новое ядро с поддержкой ограничений дискового пространства
(quota), вам необходимо перезагрузить машину что бы было загружено новое ядро.
После чего вам придется решить на какую файловую систему необходимо наложить
ограничения (quotas). Чаще всего ограничения накладываются на файловую систему, в
которой располагаются домашние каталоги пользователей или на файловую систему,
которая смонтирована в каталог /usr и пользователи имеют право записывать на нее
информацию. Для того чтобы разрешить ограничения на дисковое пространство на
необходимой файловой системе вы должны отредактировать файл /etc/fstab добавив к
указанной системе опции для ограничения дискового пространства (как для
пользователей так и для групп).
Отредактированный файл /etc/fstab может иметь вид:
# /etc/fstab
/dev/hda1/ext2 defaults
/dev/hda2noneswap sw
/dev/hda3/usrext2 defaults
/dev/hdb1/usr/usersext2 defaults,usrquota,grpquota
/dev/hdb2/usr/src ext2 defaults,usrquota
none /proc proc defaults

4.

Выбор файловой системы, на которую будут накладываться ограничения
Зарезервированное слово "usrquota", в поле опций, включает ограничение
дискового пространства (quotas) для пользователей (userquota) на данном
устройстве. Зарезервированное слово "grpquota" включает ограничение дискового
пространства для групп (groupquota) на данном устройстве. Во то время когда вы
используете опции "usrquota" и "grpquota" без '=', то ваши файлы ограничений
(quotafile) будут находится в корневом каталоге каждой файловой системы, в
которой используются ограничения на дисковое пространство.
Например строка "usrquota=/usr/adm/quotasrc.user" установит файл ограничений
для пользователей в каталоге /usr/adm, который будет называться "quotarc.user".
Однако будьте внимательны, и отслеживайте длину строки в файле /etc/fstab
(смотрите ее определение в файле mntent.h)

5.

Разрешение ограничений на дисковое пространство (quotas).
Периодически (в основном после некорректной перезагрузки системы и во время первого
разрешения ограничений на дисковое пространство) записи, содержащиеся в файле
ограничений должны быть проверены на целостность действительного числа блоков и
файлов выделенных для пользователя. Для выполнения этой операции может быть
использована команда quotacheck. Данную команду необязательно выполнять для
неподмонтированных файловых систем или файловых системах, на которых отключено
ограничение на дисковое пространство (quotas). Для проверки файловой системы на число
блоков используемых пользователем, а так же для установки и изменения всех файлов
ограничений (quotafiles) выполните команду:
quotacheck -avug
Данную команду можно поместить в один из rc скриптов и запускать ее на файловой системе
так же как и fsck, только тогда, когда не установлен флаг fastreboot. Данная программа не
поддерживает одновременную параллельную проверку нескольких файловых систем. Для
того чтобы включить систему ограничений на дисковое пространство на необходимо
добавить строку /usr/bin/quotaon -avug в один из ваших /etc/rc файлов. Данная команда
будет включать поддержку ограничений дискового пространства во время загрузки вашей
системы. Это один из способов автоматизировать включение данной системы .

6.

Проверка файловой системы на ограничения дискового пространства
Только суперпользователь может использовать команду quota для проверки используемых ограничений
любого пользователя, и команду repquota для проверки используемого пространства и ограничений для
всех пользователей на данной файловой системе. Просто запустите программу quotacheck -avug и файлы
ограничений будут автоматически изменены, а так же будет изменена таблица, которая используется
ядром системы. Файл ограничений имеет размер 2Мб (несмотря на то что ни один из пользователей
может не иметь ограничений). На самом деле этот файл не занимает много места на диске, так как все
нулевые блоки не располагаются на диске. Для того чтобы получить информацию об ограничениях,
наложенных на всех пользователей необходимо выполнить команду
root# repquota -ua
после чего на экране можно будет видеть таблицу, в которой указаны ограничения, наложенные на
каждого пользователя. Содержимое экрана после выполнения выше приведенной команды может иметь
вид:
Block limitsFile limits
Userused soft hard grace used soft hard grace
root-- 487082 0 0 12147 0 0
daemon -- 399 0 0 2 0 0
news-- 626 0 0 46 0 0
www -- 156 0 0 1 0 0
andrey -- 6 0 0 1 0 0
vera-- 885 0 0 8 0 0
admin -- 643 0 0 12 0 0
test1 +- 1587 1 0none 1 0 0
cola+- 345 1 0none94 0 0
ifmail +- 3030 1 0none 794 0 0
Для получения информации о группах необходимо выполнить команду repquota -ga .

7.

Определение ограничения дискового пространства для пользователя или группы.
Для редактирования ограничения дискового пространства необходимо использовать
программу edquota . Для редактирования ограничений дискового пространства для
конкретного пользователя необходимо использовать программу edquota с опцией -u, а
для группы необходимо использовать ту же программу, но с опцией -g. Редактировать
необходимо только число, которое следует за словом hard или soft. Например,после
выполнения команды
root# edquota -u cola
содержимое экрана может иметь вид:
Quotas for user cola:
/dev/hdb3: blocks in use: 345, limits (soft = 1, hard = 0)
inodes in use: 94, limits (soft = 0, hard = 0)
После чего вы можете изменить значения, указанные после слов hard и soft. При
редактировании используется редактор, который указывается в переменной окружения
EDITOR.

8.

Как запретить ограничения дискового пространства для пользователя или группы.
Если вы захотели запретить ограничения, наложенные на какого то пользователя или
на группу, то вам необходимо воспользоваться программой edquota для
редактирования значений hard и soft. Установите эти значения в 0. После чего для
данного пользователя или группы не будет существовать ограничений на дисковое
пространство, и он/она сможет создавать неограниченное количество файлов
(ограниченное только дисковым пространством).
Ограничения на NFS файловой системе.
Для того чтобы иметь ограничения дискового пространства на NFS-файловой системе
вам необходимо установить quota на сервере, но она не нужна у клиента. Клиент
может получить информацию об ограничениях с помощью команды quota, которая
посылает запрос к rquotad серверу, который должен быть запущен на файл сервере,
на котором вы монтируете FNS-каталог. Вам не нужно устанавливать флаги usrquota
или grpquota для монтирования NFS-дисков. Вместо этого установите quota на своем
файловом сервере и запустите на нем из rc-файла сервер rpc.rquotad.

9.

ТЕМА: ПРОЦЕССЫ В LINUX. ДЕМОНЫ. УПРАВЛЕНИЕ ПАМЯТЬЮ
Цель: Познакомиться с понятием процесса и демонов в ОС Linux. Освоить механизмы
управления процессами с помощью сигналов.
Содержание работы:
Состояние процессов. Сигналы. Дерево сигналов.
Команды ps, top, nice, renice, kill, pstree.
Перевод процесса в фоновый режим, изменение приоритетов процесса.
Команда nohup.
Демоны в ОС Linux.
Управление памятью в системе. Область SWAP.
Дополнительная информация:
Характерной чертой современных операционных систем является поддержка
многозадачности - параллельного выполнения нескольких задач (task), что
обеспечивается, главным образом, аппаратными возможностями центрального
процессора.
Под задачей понимают экземпляр программы, которая находится в стадии
выполнения. Синонимом термина "задача" является термин "процесс".

10.

Существует 3 состояния, в которых может находиться процесс:
Работающий процесс – в данный момент код процесса выполняется.
Спящий процесс – в данный момент код процесса не выполняется в ожидании, какого
либо события (нажатия клавиши на клавиатуре, поступление данных из сети и т.д.)
Процесс-зомби – сам процесс уже не существует, его код и данные выгружены из
оперативной памяти, но запись в таблице процессов остается по тем или иным причинам.
Общие сведения о процессах. Процесс состоит из адресного пространства и набора
структур данных, содержащихся внутри ядра операционной системы. Адресное
пространство представляет собой совокупность страниц памяти, которое ядро выделило
для выполнения процесса. Адресное пространство содержит сегменты кода для
программы, которую выполняет процесс, используемые процессом переменные, стек
процесса и различную вспомогательную информацию, необходимую ядру во время
работы процесса.
В структурах данных ядра хранится различная информация о каждом процессе. К
наиболее важным сведениям относятся:
- таблица распределения памяти процесса;
- текущий статус процесса;
- приоритет выполнения процесса;
- информация о ресурсах, которые использует процесс;
- владелец процесса.

11.

12.

С каждым процессом связан набор атрибутов, которые помогают системе управлять выполнением и
планированием процессов. С точки зрения системного администрирования интерес представляют
следующие атрибуты:
1) Идентификатор процесса (PID). Каждому новому процессу ядро
присваивает уникальный
идентификационный номер. В любой момент времени идентификатор процесса является уникальным,
хотя после завершения процесса он может использоваться снова для другого процесса. Некоторые
идентификаторы зарезервированы системой для особых процессов. Так, процесс с идентификатором 1 это процесс инициализации init, являющийся предком всех других процессов в системе.
2) Идентификатор родительского процесса (PPID). Новый процесс создается путем клонирования одного
из уже существующих процессов. Исходный процесс в терминологии UNIX называется родительским, а
его клон – порожденным. Помимо собственного идентификатора, каждый процесс имеет атрибут PPID,
т.е. идентификатор своего родительского процесса.
3) Идентификатор владельца (UID) и эффективный идентификатор владельца. UID - это
идентификационный номер пользователя, который создал данный процесс. Вносить изменения в
процесс могут только его создатель и привилегированный пользователь. EUID - это "эффективный" UID
процесса. EUID используется для того, чтобы определить, к каким ресурсам и файлам у процесса есть
право доступа. У большинства процессов UID и EUID будут одинаковыми. Исключение составляют
программы, у которых установлен бит смены идентификатора пользователя.
4) Идентификатор группы GID и эффективный идентификатор группы (EGID) GID – это
идентификационный номер группы данного процесса. EGID связан с GID также, как EUID с UID.
5) Приоритет.
6) Текущий каталог, корневой каталог, переменные программного окружения, Управляющий терминал
(controlling terminal)

13.

Жизненный цикл процесса
Все процессы, кроме init, создаются при помощи системного вызова fork (процесс init
создается во время начальной загрузки системы). Вызывая функцию fork, процесс создает
свой дубликат, называемый дочерним процессом. Дочерний процесс является практически
точной копией родительского, но имеет следующие отличия:
- у дочернего процесса свой PID;
- PPID дочернего процесса равен PID родителя.
После выполнения fork родительский процесс может посредством системного вызова wait
или waitpid приостановить свое выполнение до завершения порожденного (дочернего)
процесса, или продолжать свое выполнение независимо от дочернего, а дочерний процесс,
в свою очередь, может запустить на выполнение новую программу при помощи одного из
системных вызовов семейства exec.
Совместное применение системных вызовов fork и exec представляют мощный инструмент
для программиста. Благодаря ветвлению при использовании вызова exec в дочернем
процессе может выполняться другая программа. Таким образом, один процесс может
создавать несколько других процессов для параллельного выполнения нескольких
программ, и поскольку каждый порожденный процесс выполняется в собственном
адресном пространстве, статус его выполнения не влияет на родительский процесс.

14.

Процесс завершает выполнение при помощи системного вызова exit. Аргументом этого вызова
является код статуса завершения процесса. Младшие восемь бит статуса доступны
родительскому процессу при условии, что он выполнил системный вызов wait. По соглашению,
нулевой код статуса завершения означает, что процесс завершил выполнение успешно, а
ненулевой свидетельствует о неудаче.
Над процессами можно производить следующие операции:
Создание процесса – это переход из состояния рождения в состояние готовности;
Уничтожение процесса – это переход из состояния выполнения в состояние смерти;
Восстановление процесса – переход из состояния готовности в состояние выполнения;
Изменение приоритета процесса – переход из выполнения в готовность;
Блокирование процесса – переход в состояние ожидания из состояния выполнения;
Пробуждение процесса – переход из состояния ожидания в состояние готовности;
Запуск процесса (или его выбор) – переход из состояния готовности в состояние выполнения.

15.

Изменение приоритета выполнения: команды NICE и RENICE
Фактор “уступчивости” — это число, по которому ядро определяет свою политику
в отношении процессов, конкурирующих за право доступа к центральному процессору.
Чем выше фактор уступчивости, тем ниже приоритет процесса и наоборот, отсюда и название
термина. Низкое или отрицательное значение означает использование высокого приоритета:
процесс ведет себя не слишком уступчиво.
Диапазон допустимых значений фактора уступчивости зависит от используемой системы, и обычно
он лежит в пределах от -20 до +19. В некоторых системах используется диапазон такого же
размера, но со смещением в область неотрицательных чисел (как правило, от 0 до 39).
$ nice -n 5 ~/bin/longtask // Понижаем приоритет (увеличиваем
// фактор уступчивости) на 5
$ sudo renice -5 8829 // Задаем фактор уступчивости равным -5
$ sudo renice 5 -u boggs // Задаем фактор уступчивости процессов
// пользователя "boggs" равным 5

16.

Текущий контроль процессов: команда ps
Команда ps — основной инструмент, которым системный администратор пользуется для
текущего контроля процессов. Версии этой команды различаются аргументами и выходным
форматом, но, по сути, выдают одну и ту же информацию. В основном, различие в версиях
— это следствие разных путей развития систем UNIX. Кроме того, поставщики систем могут
настраивать эту команду с учетом конфигурации системы, так как она тесно связана с
особенностями обработки процессов в ядре и поэтому часто отражает изменения в ядре.
С помощью команды ps можно получить информацию об идентификаторах, приоритете и
управляющем терминале того или иного процесса. Она также позволяет выяснить, какой
объем памяти использует процесс, сколько времени центрального процессора заняло его
выполнение, каково его текущее состояние (выполняется, остановлен, простаивает и т.д.).
Процессы-зомби в листинге команды обозначаются как <exiting> или <defunct>.
Команда ps стремительно усложнилась за последние несколько лет. Некоторые поставщики
бросили попытки стандартизировать выходной формат этой команды и сделали ее
полностью конфигурируемой. Проведя небольшую настройку, можно получить практически
любые требуемые результаты. В Linux команда ps является настоящим хамелеоном и
понимает наборы опций из ряда других систем. Имеется также специальная переменная
среды, с помощью которой можно выбрать нужный набор.

17.

Команда ps. GNU-версия этой программы, входящая в состав Linux,
поддерживает опции в стиле трех разных типов UNIX. Опции в стиле
Unix98 состоят из одного или нескольких символов, перед которым(и)
должен стоять дефис. Опции в стиле BSD имеют аналогичный вид, только
используются без дефиса. Опции, характерные только для GNU-версии
представляют собой слово, перед которым должно стоять два дефиса. Их
нельзя объединять, как однобуквенные опции двух предшествующих
типов.
Таким образом, существует три равноправных формата задания этой
команды:
ps [-опции]
ps [опции]
ps [-- длинное_имя_опции [-- длинное_имя_опции] ...]
При этом опции разных типов нельзя употреблять в одной команде.

18.

Первая группа опций регулирует вывод команды. Независимо от наличия опций этой группы
команда ps выдает для каждого процесса отдельную строку, но содержимое этой строки
может быть разным. В зависимости от заданных опций могут присутствовать следующие
поля:
USER — имя владельца процесса;
PID — идентификатор процесса в системе;
PPID — идентификатор родительского процесса;
%CPU — доля времени центрального процессора (в процентах), выделенного данному
процессу;
%MEM — доля реальной памяти (в процентах), используемая данным процессом;
VSZ — виртуальный размер процесса (в килобайтах);
RSS — размер резидентного набора (количество 1K-страниц в памяти);
STIME — время старта процесса;
TTY — указание на терминал, с которого запущен процесс;
S или STAT — статус процесса;
PRI — приоритет планирования;
NI — значение nice (см. описание команды nice ниже);
TIME — сколько времени центрального процессора занял данный процесс;
CMD или COMMAND — командная строка запуска программы, выполняемой данным
процессом.
Полный список полей приведен на man-странице, посвященной команде ps.

19.

Вторая группа опций регулирует то, какие именно процессы включаются в вывод команды. Чтобы
получить список всех процессов надо использовать команду ps с опциями ax или –A. Вывод в этих
двух случаях отличается только в поле CMD: в первом случае выдается полная командная строка
запуска программы, а во втором — только имя запущенной программы.
Примеры применения команды ps в типичных ситуациях.
Для того чтобы увидеть все процессы в системе, используя стандартную форму вывода:
[root@ca ~]# ps –e
Можно к той же команде добавить опцию –o, после которой указать через запятую, какие именно
поля вы хотите видеть в выводе команды:
[root@ca ~]# ps -eo pid,user,cmd
PID USER CMD
1 root init [3]
2 root [ksoftirqd/0]
Для того, чтобы увидеть все процессы в системе, используя форму вывода BSD-систем:
[root@ca ~]# ps ax
Для того, чтобы увидеть все процессы в системе, с применением графического отображения
отношения "предок-потомок":
[root@ca ~]# pstree
Для того, чтобы увидеть, сколько % ЦПУ и памяти занимают запущенные вами процессы:
[user]$ ps –u
Для просмотра приоритетов использовать необходимо
[user]$ ps -l

20.

Команда top. Команда ps позволяет сделать как бы "моментальный снимок"
процессов, запущенных в системе. В отличие от ps команда top отображает состояние
процессов и их активность "в реальном режиме времени".

21.

Содержимое окна обновляется каждые 5 секунд. Список процессов может
быть отсортирован по используемому времени ЦПУ (по умолчанию), по
использованию памяти, по PID, по времени исполнения. Переключать
режимы отображения можно с помощью команд, которые программа top
воспринимает:
<Shift>+<N> — сортировка по PID;
<Shift>+<A> — сортировать процессы по возрасту;
<Shift>+<P> — сортировать процессы по использованию ЦПУ;
<Shift>+<M> — сортировать процессы по использованию памяти;
<Shift>+<T> — сортировка по времени выполнения.
С помощью команды <K> можно завершить некоторый процесс (его PID
будет запрошен), а с помощью команды <R> можно переопределить
значение nice для некоторого процесса. Таким образом, эти две команды
аналогичны командам kill и renice

22.

Сигналы и команда kill. Сигналы — это средство, с помощью которого процессам можно передать
сообщения о некоторых событиях в системе. Сами процессы тоже могут генерировать сигналы, с
помощью которых они передают определенные сообщения ядру и другим процессам. С помощью
сигналов можно приостанавливать процесс, запускать приостановленный процесс, завершать работу
процесса. Всего в Linux существует 64 разных сигнала, их перечень можно посмотреть по команде
[user]$ kill –l
[root@ca ~]# kill -l
1) SIGHUP
2) SIGINT
3) SIGQUIT
4) SIGILL
5) SIGTRAP
6) SIGABRT
7) SIGBUS
8) SIGFPE
9) SIGKILL
10) SIGUSR1
11) SIGSEGV
12) SIGUSR2
13) SIGPIPE
14) SIGALRM 15) SIGTERM
17) SIGCHLD
18) SIGCONT
19) SIGSTOP
20) SIGTSTP
21) SIGTTIN
22) SIGTTOU
23) SIGURG
24) SIGXCPU
25) SIGXFSZ
26) SIGVTALRM
27) SIGPROF
28) SIGWINCH 29) SIGIO
30) SIGPWR
31) SIGSYS
34) SIGRTMIN 35) SIGRTMIN+1
36) SIGRTMIN+2
37) SIGRTMIN+3
38) SIGRTMIN+4
39) SIGRTMIN+5
40) SIGRTMIN+6
41) SIGRTMIN+7
42) SIGRTMIN+8
43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6
59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3
62) SIGRTMAX-2
63) SIGRTMAX-1
64) SIGRTMAX

23.

Краткое описание наиболее часто встречающихся сигналов

24.

Команда nohup. Предположим, вы запустили из оболочки bash несколько процессов,
часть из них в фоновом режиме. И по каким-то причинам завершили текущую сессию
работы в оболочке. При завершении сессии оболочка посылает всем порожденным
ею процессам сигнал "отбой", по которому некоторые из порожденных ею процессов
могут завершиться, что не всегда желательно. Если вы хотите запустить в фоновом
режиме программу, которая должна выполняться и после вашего выхода из оболочки,
то ее нужно запускать с помощью утилиты nohup.
Пример:
nohup команда &
Запускаемый таким образом процесс будет игнорировать посылаемые ему сигналы
(если это возможно, см. табл. выше). Стандартный выходной поток и стандартный
поток ошибок при таком запуске команд перенаправляются в файл nohup.out или
$HOME/nohup.out.
Команда nohup имеет недостаток - значение nice для запускаемого процесса
увеличивается на 5, т. е. процесс выполняется с более низким приоритетом.

25.

Управление Памятью. В Linux есть виртуальная память и дисковый буфер. Система Linux
поддерживает использование виртуальной памяти, то есть использование жесткого диска как
pасшиpения оперативной памяти для повышения ее объема. Ядро записывает на диск
содержимое текущего неиспользуемого блока памяти. Часть жесткого диска, используемая в
качестве виртуальной памяти, называется swap областью.
Linux может использовать для swap области, как обычный файл, так и отдельный раздел диска.
Использование дискового раздела быстрее, но изменение pазмеpа swap файла намного проще,
чем раздела (нет необходимости в разбиении диска заново и установке всех данных с pезеpвных
копий). Если требуемый pазмеp swap области известен, то следует использовать раздел диска, если
же в этом нет уверенности, то можно сначала использовать swap файл, определить потребности
системы, а затем создать swap раздел определенного объема.
Linux также позволяет одновременно использовать несколько swap разделов и/или swap файлов.
При необходимости временного создания нестандартного объема swap области, можно установить
дополнительный swap файл, вместо постоянного использования всего объема.
Наиболее эффективно устанавливать объем файла swap кратным четырем, так как ядро
производит обмен страницами по 4 килобайта в каждой. Если pазмеp swap файла не кратен
четырем, то последние несколько килобайт могут быть неиспользованными.
Swap раздел также особо не отличается от других разделов. Его можно создать также как и любой
другой раздел, только единственное отличие состоит в том, что он не содержит какой-либо
файловой системы.

26.

Использование swap пpостpанства. Инициализированная swap область вступает в действие только
после запуска команды swapon. Эта команда передает ядру информацию, говорящую о том, что swap
может использоваться. В качестве паpаметpа указывается путь к swap области, так для указания
временного swap файла следует выполнить следующую команду:
ttyp5 root ~ $ swapon /usr/tmp/temporary-swap-file
ttyp5 root ~ $
Swap области могут устанавливаться автоматически путем указания их в файле /etc/fstab.
/dev/hda8 swap swap defaults
Запускаемые при загрузке системы командные файлы, выполнят команду swap -a, которая установит
все swap области, указанные в файле /etc/fstab. Поэтому команда swapon обычно используется для
установки дополнительной swap области.
Для получения информации об использовании swap областей применяется команда free, которая
показывает общий объем используемого swap пpостpанства. Подобная инфоpмация доступна через
команду top или файловую систему proc, файл /proc/meminfo.
Swap область может быть отключена после выполнения команды swapoff.
Если виртуальной памяти не хватает для сохранения всех страниц, то происходит сбой системы.
С помощью команды free следует проверять наличие свободной памяти перед отключением swap
области.
Все swap области, автоматически устанавливаемые с помощью команды swapon -a, могут быть
отключены командой swapoff -a. Для определения отключаемых областей используется файл
/etc/fstab. Все swap области, установленные вручную, остаются задействованными.

27.

Демоны. Демон (англ. daemon) — в системах класса UNIX — программа, работающая
в фоновом режиме без прямого общения с пользователем.
Демоны обычно запускаются во время загрузки системы. Типичные задачи
демонов — серверы сетевых протоколов (HTTP, FTP, электронная почта и др.),
управление оборудованием, поддержание очередей печати, управление
выполнением по расписанию и подобные задачи. В техническом смысле, демоном
считается процесс, предком которого является init — корневой процесс UNIX.
Иногда слово daemon интерпретируют как акроним англ. Disk and execution monitor,
но само слово возникло на заре Unix гораздо раньше этой расшифровки. В системах
Windows аналогичный класс программ называется «Службы» (англ. Services),
которые, впрочем, тоже иногда называют демонами.
Примеры:
init – Unix программа, которая порождает все остальные процессы;
dhcpd – динамически определяет конфигурацию TCP/IP для клиентов;
sshd – прослушивает запросы secure shell от клиентов;
syslogd – системный процесс записи различных системных сообщений.

28.

Демонами в мире Unix традиционно называются процессы, которые не взаимодействуют с
пользователем напрямую. У процесса-демона нет управляющего терминала и нет,
соответственно, пользовательского интерфейса. Для управления демонами приходится
использовать другие программы. Само название «демоны» возникло благодаря тому, что
многие процессы этого типа большую часть времени проводят в ожидании какого-то события.
Когда это событие наступает, демон активизируется, выполняет свою работу и снова засыпает
в ожидании события. Следует отметить, что многие демоны, такие как, например, Webсервер или сервер баз данных, могут отбирать на себя практически все процессорное время
и другие ресурсы системы. Такие демоны гораздо больше работают, чем спят.
Демоны, ссылки на которых присутствуют /etc/init.d, призваны работать в Linux как сервисы
или службы.
Многие из этих сервисов запускаются на этапе загрузки системы. Утилита /sbin/service
обеспечивает интерфейс (взаимодействие) пользователя с инициализационными скриптами.
А сами эти скрипты обеспечивают интерфейс для управления сервисами, предоставляя
пользователю опции для запуска, остановки, перезапуска, запроса состояния сервиса и
выполнения других воздействий на сервис. К примеру, инициализационный скрипт сервиса
httpd имеет следующие опции:
/sbin/service httpd
Usage: httpd {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}

29.

Просмотреть текущее состояние всех системных служб возможно с помощью опции утилиты
service:
/sbin/service --status-all
acpid (pid 2481) is running...
anacron (pid 2647) is running...
atd (pid 2657) is running...
auditd (pid 2189) is running...
Информация об уровне выполнения этих сервисов, то есть установка того, на каком из системных
уровней выполнения запускается тот или иной сервис во время загрузки системы, может быть
получена или изменена с помощью утилиты chkconfig. Посмотрим, например, текущие установки
для службы системного протоколирования
syslog:
/sbin/chkconfig --list syslog
syslog
0:off 1:off 2:on 3:on 4:on 5:on 6:off
Т.О. сервис syslog автоматически запускается при переходе на уровни 2, 3, 4 и 5. Для того, чтобы
отключить его запуск на уровнях 3 и 4, можно воспользоваться следующей опцией команды
chkconfig:
/sbin/chkconfig --levels 34 syslog off
Для каждого из демонов идентификатор родительского процесса (PPID) равен 1. Это показывает,
что демоны были запущены процессом init во время загрузки системы.
English     Русский Правила