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

lab.MIT.02

.pdf
Скачиваний:
7
Добавлен:
19.02.2016
Размер:
556.88 Кб
Скачать

Лабораторная работа № 2

Основы системного администрирования ОС FreeBSD Unix

Краткие теоретические сведения

1. Организация ресурсов в ОС Unix.

С точки зрения пользователя, в операционной системе UNIX существуют два типа объектов: файлы и процессы. Все данные хранятся в виде файлов, доступ к периферийным устройствам осуществляется посредством чтения/записи в специальные файлы. Когда запускается программа, ядро загружает соответствующий исполняемый файл, создает образ процесса и передает ему управление. Более того, во время выполнения процесс может считывать или записывать данные в файл. С другой стороны, функциональность операционной системы определяется выполнением соответствующих процессов. Работа системы печати или обеспечения удаленного доступа зависит от того, выполняются ли те или иные процессы в системе.

1.1. Файлы и файловая система.

Файлы в UNIX играют ключевую роль, что не всегда справедливо для других операционных систем. Трудно отрицать значение файлов для пользователей, поскольку все их данные хранятся в виде файлов. Однако помимо этого, файлы в UNIX определяют привилегии пользователей, поскольку права пользователя в большинстве случаев контролируются с помощью прав доступа к файлам. Файлы обеспечивают доступ к периферийным устройствам компьютера, включая диски, накопители на магнитной ленте, CD-ROM, принтеры, терминалы, сетевые адаптеры и даже память. Наконец, все программы, которые выполняются в системе, включая прикладные задачи пользователей, системные процессы и даже ядро UNIX, являются исполняемыми файлами.

Как и во многих современных операционных системах, в UNIX файлы организованы в виде древовидной структуры (дерева), называемой файловой системой. Каждый файл имеет имя, определяющее его расположение в дереве файловой системы. Корнем этого дерева является корневой каталог (root directory), имеющий имя «/». Имена всех остальных файлов содержат путь – список каталогов (ветвей), которые необходимо пройти, чтобы достичь файла. В UNIX все доступное пользователям файловое пространство объединено в единое дерево каталогов, корнем которого является каталог «/». Таким образом, полное имя любого файла начинается с «/» и не содержит идентификатора устройства (дискового накопителя, CD-ROM или удаленного компьютера в сети), на котором он фактически хранится.

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

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

1.2. Типы файлов.

В UNIX существует 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами:

обычный файл (regular file); каталог (directory);

специальный файл устройства (special device file); FIFO или именованный канал (named pipe);

связь (link); сокет (socket).

Обычный файл представляет собой данные, записанные в произвольном формате, обеспечивающем чтение и запись соответствующими процессами. Для операционной системы такие файлы представляют собой просто последовательность байтов. Интерпретация содержимого файла производится прикладной программой, обрабатывающей файл. К этим файлам относятся текстовые файлы, бинарные данные, программные файлы и т.п.

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

1

Специальный файл устройства обеспечивает доступ к физическому устройству. В UNIX различают символьные (character) и блочные (block) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.

FIFO или именованный канал – это файл, используемый для связи между процессами. FIFO впервые появились в System V UNIX, но большинство современных систем поддерживают этот механизм.

Связь. Как уже говорилось, каталог содержит имена файлов и указатели на их метаданные. В то же время сами метаданные не содержат ни имени файла, ни указателя на это имя. Такая архитектура позволяет одному файлу иметь несколько имен в файловой системе. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как он назван в файловой системе. Такая связь имени файла с его данными называется жесткой связью (hard link).

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

Сокеты. Предназначены для взаимодействия между процессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP. В системах ветви BSD UNIX на базе сокетов реализована система межпроцессного взаимодействия, с помощью которой работают многие системные сервисы, например система печати.

1.3. Структура каталогов FreeBSD.

Файловая система FreeBSD является ключевым моментом в понимании устройства всей системы. Самым важным понятием является, несомненно, корневой каталог, обозначаемый символом «/». Корневой каталог монтируется самым первым на этапе загрузки и содержит все необходимое, чтобы подготовить систему к загрузке в многопользовательский режим. Корневой каталог также содержит точки монтирования всех других файловых систем.

Точкой монтирования называется каталог, который будет соответствовать корню смонтированной файловой системы. Стандартные точки монтирования включают/usr, /var, /tmp, /mnt и/cdrom. Эти каталоги обычно перечислены в файле/etc/fstab, в котором указаны файловые системы и их точки монтирования. Большинство файловых систем, описанных в/etc/fstab монтируются автоматически из скриптаrc(8), если только для них не указана опцияnoauto.

Полное описание иерархии файловой системы есть вhier(7). Здесь же мы упомянем лишь наиболее важные каталоги.

Каталог

/

/bin/

/boot/

/boot/defaults/

/dev/

/etc/

/etc/defaults/

/etc/mail/

/etc/namedb/

/etc/periodic/

/etc/ppp/

/mnt/

/proc/

/rescue/

/root/

/sbin/

/tmp/

Описание

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

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

Программы и конфигурационные файлы, необходимые для нормальной загрузки операционной системы.

Конфигурационные файлы с настройками по умолчанию, используемые в процессе загрузки операционной системы (см.loader.conf(5)).

Файлы устройств (см. intro(4)).

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

Основные конфигурационные файлы системы с настройками по умолчанию (см. rc(8)). Конфигурационные файлы для систем обработки почты (например, sendmail(8)). Конфигурационные файлы для утилиты named (см. named(8)).

Файлы сценариев, выполняемые ежедневно, еженедельно и ежемесячно

(см. cron(8) и periodic(8)).

Конфигурационные файлы для утилиты ppp (см. ppp(8)).

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

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

(см. procfs(5), mount_procfs(8)).

Статически собранные программы для восстановления после сбоев (см к rescue(8)). Домашний каталог пользователя root.

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

Временные файлы. Содержимое /tmp обычно теряется во время перезагрузки системы. Файловая система в памяти часто монтируется в /tmp. Это может быть автоматизированно с помощью переменных относительно tmpmfs из rc.conf(5) (или же с помощью записи

2

Каталог

/usr/

/usr/bin/

/usr/include/

/usr/lib/

/usr/libdata/

/usr/libexec/

/usr/local/

/usr/obj/

/usr/ports/

/usr/sbin/

/usr/share/

/usr/src/

/usr/X11R6/

/var/

/var/log/

/var/mail/

/var/spool/

/var/tmp/

/var/yp/

Описание

в /etc/fstab; см mdmfs(8)).

Большинство пользовательских утилит и приложений. Пользовательские утилиты и приложения общего назначения. Стандартные заголовочные файлы для языка C.

Файлы стандартных библиотек. Файлы данных для различных утилит.

Системные демоны и утилиты (выполняемые другими программами).

Локальные пользовательские приложения, библиотеки, и т.д. Также используется по умолчанию коллекцией портов. Внутри/usr/local иерархия каталогов должна следовать hier(7) для /usr. Исключение составляют каталог man, который расположен непосредственно в /usr/local, а не в /usr/local/share, и документация портов, которая расположена в share/doc/port.

Архитектурно-зависимые файлы и каталоги, образующиеся в процессе сборки системы из исходных текстов в /usr/src.

Коллекция портов FreeBSD (опционально).

Системные утилиты и утилиты администрирования (исполняемые пользователем). Архитектурно-независимые файлы.

Исходные тексты BSD и/или программ.

Утилиты, приложения и библиотеки X11R6 (X Window System; необязательно).

Файлы журналов общего назначения, временные, перемещаемые файлы и файлы очередей. Файловая система в памяти иногда монтируется в /var. Это может быть автоматизированно с помощью переменных относительно varmfs из rc.conf(5) (или же с помощью записи в /etc/fstab; см. mdmfs(8)).

Различные файлы системных журналов. Почтовые ящики пользователей. Файлы очередей печати, почты, и пр.

Временные файлы, которые обычно сохраняются во время перезагрузки системы, если только /var не является файловой системой в памяти.

Карты (maps) NIS.

1.4. Организация дисков.

Наименьшая единица, которую FreeBSD использует для обращения к файлам, это имя файла. Имена файлов чувствительны к регистру, поэтому readme.txt и README.TXT – два разных файла. FreeBSD не использует расширение файла (.txt) для определения программа это, документ или другой тип данных.

Файлы хранятся в каталогах. Каталоги могут не содержать файлов, или могут содержать много сотен файлов. Каталоги также могут содержать другие каталоги, что позволяет создавать иерархию каталогов один в другом. Это упрощает организацию данных.

Обращение к файлам происходит путем задания имени файла или каталога, дополняемого прямым слэшем /, за которым может следовать имя другого каталога. Если есть каталог foo, содержащий каталог bar, который содержит файл readme.txt, полное имя, или путь к файлу будет foo/bar/readme.txt.

Каталоги и файлы хранятся в файловой системе. Каждая файловая система содержит один каталог на верхнем уровне, называемый корневым каталогом этой файловой системы. Этот корневой каталог может содержать другие каталоги.

Вместо этого, одна файловая система назначается корневой файловой системой. Обращение к корневому каталогу корневой файловой системы происходит через /. Любая другая файловая система монтируется к корневой файловой системе. Неважно как много дисков есть в системе FreeBSD, каждый каталог будет выглядеть как расположенный на том же диске. Пусть есть три файловых системы: A, B, и C. Каждая файловая система имеет один корневой каталог, в котором содержатся другие каталоги, называемые A1, A2 (и аналогично B1, B2 и C1, C2).

Пусть A – корневая файловая система. Если использовать команду ls для просмотра содержимого каталога, то можно увидеть два подкаталога, A1 и A2. Дерево каталогов выглядит так:

3

Файловая система должна быть подмонтирована к каталогу другой файловой системы. Предположим, что файловая система B монтируется на каталог A2. Корневой каталог B замещается A2, а каталоги в B отображаются соответственно:

Если потребуется, любые файлы из каталогов B1 или B2 могут быть получены через путь /A2/B1 или /A2/B2. Все файлы, бывшие в /A2, временно скрыты. Они появятся, если B будет размонтирована с A2.

Файловые системы могут быть смонтированы одна на другую. Продолжая предыдущий пример, файловая система C может быть смонтирована на каталог B1 файловой системы B в таком порядке:

Или C может быть смонтирована прямо на файловую систему A, на каталог A1 :

Обычно все файловые системы создаются во время установки FreeBSD.

Можно создать одну большую корневую файловую систему и не создавать других. У такого подхода есть несколько недостатков и одно преимущество.

1.4.1. Преимущества нескольких файловых систем.

1.4.1.1. Различные файловые системы могут иметь различные опции монтирования. Например, в целях безопасности корневая файловая система может быть смонтирована только для чтения, что делает невозможным случайное удаление или редактирование критически важного файла. Отделение файловых систем, используемых пользователями для записи, таких как /home, от других файловых систем позволяет также монтировать их с параметром nosuid; этот параметр отменяет действие битов suid/ guid на исполняемых файлах, в этой файловой системе, что потенциально повышает безопасность.

1.4.1.2. FreeBSD автоматически оптимизирует расположение файлов на файловой системе в зависимости от того, как файловая система используется. Файловая система, содержащая множество мелких часто записываемых файлов, будет иметь оптимизацию, отличную от таковой для файловой системы, содержащей несколько больших файлов. На одной большой файловой системе эта оптимизация не работает.

4

1.4.1.3. Файловые системы FreeBSD очень устойчивы к внезапному отключению. Тем не менее, потеря питания в критический момент все же может повредить структуру файловой системы. Разделение данных на несколько файловых систем повышает шансы, что система все-таки будет работать и делает более легким восстановление с резервной копии.

1.4.2. Преимущество одной файловой системы.

Размер файловых систем фиксирован. Если создается файловая система при установке FreeBSD и задается определенный размер, позднее можно обнаружить, что нужен раздел большего размера. Это не так легко сделать без резервного копирования, создания файловых систем нового размера и последующего восстановления сохраненных данных. Во FreeBSD представлена команда growfs(8), которая позволяет увеличивать размер файловой системы на лету, устраняя это ограничение.

Файловые системы содержатся в разделах. Каждый раздел обозначается буквой отa доh. Каждый раздел может содержать только одну файловую систему, это значит что файловая система может быть описана ее точкой монтирования в файловой иерархии, или буквой раздела, в котором она содержится.

FreeBSD также использует дисковое пространство подраздел подкачки (swap space). Подкачка позволяет FreeBSD

работать свиртуальной памятью.

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

Раздел

Соглашение

aКак правило, содержит корневую файловую систему

bКак правило, содержит раздел подкачки

Как правило, такого же размера, что и весь слайс (slice). Это позволяет утилитам, которым нужно работать над

cвсем слайсом (например, сканер плохих блоков), работать с разделом c. В обычной ситуации не нужно создавать файловую систему на этом разделе.

dРаздел d создавался для специальных целей, хотя сейчас они не актуальны и d может быть задействован как обычный раздел.

Каждый раздел, содержащий файловую систему, хранится на том, что во FreeBSD называется слайс (slice). Слайс – это термин FreeBSD, то, что обычно называют разделом, и опять же это из-за UNIX основы FreeBSD. Слайсы нумеруются с 1 по 4.

Номера слайсов следуют за именем устройства, предваряемые строчнойs, начиная с 1. Так da0s1 это первый слайс первого SCSI устройства. Может быть только четыре физических слайса на диске, но могут быть логические слайсы нужного типа внутри физических слайсов. Эти дополнительные слайсы нумеруются начиная с 5, так что ad0s5 это первый дополнительный слайс на первом IDE диске. Эти устройства используются файловыми системами, занимающими весь слайс.

Слайсы содержат разделы, представляемые буквами от a до h. Эти буквы добавляются к имени устройства. da0a это раздел a на первом устройстве da. ad1s3e – это пятый раздел в третьем слайсе второго IDE диска.

Наконец, каждый диск идентифицирован. Имя диска начинается с кода, обозначающего тип диска, затем идет номер диска. В отличие от слайсов, нумерация дисков начинается с 0. Основные коды, которые могут встретиться:

Код

Значение

ad

ATAPI (IDE) диск

da

SCSI direct access диск

acd

ATAPI (IDE) CDROM

cd

SCSI CDROM

fd

Floppy disk

В то время, как ссылка на раздел FreeBSD требует также указания слайса и диска, содержащего раздел, ссылка на слайс требует также указания имени диска. Например:

Имя

Значение

ad0s1a Первый раздел (a) на первом слайсе (s1) первого IDE диска (ad0).

da1s2e Пятый раздел (e) на втором слайсе (s2) второго SCSI диска (da1).

1.5. Монтирование и размонтирование файловых систем.

Файловая система лучше всего представима в виде дерева, с корнем в/. Каталоги, /dev, /usr и прочие – это ветви дерева, которые, в свою очередь, являются корнями для поддеревьев, также имеющих ветви (/usr/local), и т.д.

Хорошей практикой является разнесение некоторых особо важных каталогов на разные файловые системы. Например, /var, содержитlog/, spool/, а также всевозможные временные файлы и нередко может занять все свободное место на диске. Поэтому лучше смонтировать/var отдельно, чтобы избежать переполнения/.

5

Часто бывает так, что некоторые разделы файловой системы расположены на разных физических носителях (дисках, CDROM), виртуальных или сетевых (например, сетевая файловая система (Network File System, NFS)). В этом случае узлы файловой иерархии будут расположены на разных файловых системах.

1.5.1. Файл fstab.

Файловые системы, перечисленные в/etc/fstab, монтируются автоматически впроцессе загрузки(если, конечно, для них не указана опцияnoauto).

Формат файла/etc/fstab следующий (файловые системы перечисляются построчно):

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

устройство

Имя устройства (которое должно присутствовать).

точка монтирования

Каталог (существующий), куда следует смонтировать файловую систему.

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

Тип файловой системы, который передается программеmount(8). По умолчанию FreeBSD используетufs.

опции

Например, rw, для монтирования файловой системы в режиме «чтение-запись», илиro, для режима «только чтение», за которыми могут следовать и другие опции. Довольно часто используется опцияnoauto, чтобы не монтировать автоматически файловые системы в процессе загрузки.

частота дампов

Используется утилитой dump(8) для определения файловых систем, с которых необходимо периодически снимать специальные архивные копии. При отсутствии этого параметра принимается равным нулю.

порядок проверки

Определяет порядок, в котором следует проверять файловые системы (чаще всего, в случае некорректного размонтирования или внезапной перезагрузки системы). Если файловую системы не нужно проверять, этот параметр должен быть установлен в ноль. Для корневой файловой системы (которая должна быть проверена в первую очередь) должен быть установлен в 1. Для всех остальных – 2 или больше. Если две или более файловые системы имеют одинаковое значениеpassno, fsck(8) попытается проверять их параллельно (если, конечно, это возможно физически).

1.5.2. Команда mount.

Команда mount(8) используется, как следует из ее имени, для монтирования файловых систем. Пример использования:

# mount устройство точка-монтирования

Основные опции, которые может принимать командаmount(8):

Опции монтирования

-a

Смонтировать все файловые системы, перечисленные в файле/etc/fstab. Исключение составляют помеченные как noauto, перечисленные после опции-t и уже смонтированные.

-d

Сделать все, кроме самого системного вызова mount. Эта опция полезна вместе с флагом-v для определения того, что на самом деле пытается сделатьmount(8).

-f

Монтировать поврежденный раздел, или форсировать отмену всех запросов на запись при изменении режима монтирования с «чтение-запись» на «только чтение».

-r

Монтировать файловую систему в режиме «только для чтения». То же самое, что и указание аргументаro (rdonly для FreeBSD версий старше, чем 5.2) для опции-o.

-t fstype

Монтировать файловую систему как систему указанного типа, или, в случае опции-a, только файловые системы данного типа.

По умолчанию, тип файловой системы – «ufs».

-u

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

-v

Выдавать более подробную информацию.

-w

Монтировать файловую систему в режиме «чтение-запись».

Опция-o принимает разделенные запятыми аргументы, включая ниже перечисленные: nodev

6

Не обращать внимание на специальные файлы устройств на файловой системе (то есть не считать их файлами устройств). Весьма полезная опция для повышения безопасности системы.

noexec

Запрет на исполнение бинарных файлов на файловой системе (тоже полезная опция для повышения безопасности системы).

nosuid

Игнорировать setuid и setgid биты на файловой системе (еще одна полезная опция для повышения безопасности системы).

1.5.3. Команда umount.

Командаumount(8) принимает в качестве параметра точку монтирования какой-либо файловой системы, имя устройства, опцию-a или-A.

Кроме того, можно дополнительно указать опцию-f для форсированного размонтирования файловой системы, и- v для получения более подробной информации.

Опции-a и-A используются для размонтирования всех файловых систем. Разница состоит в том, что-A не пытается размонтировать корневую файловую систему.

1.6.Основные команды для работы с файлами.

1.6.1. Определение текущего местоположения.

Для определения текущего каталога используется команда pwd, которая выводит полный путь к этому каталогу:

> pwd /usr/home/user

1.6.2. Просмотр каталогов

Для просмотра содержимого каталога используется команда ls. Она имеет следующий формат: ls [flags] [file …]

В качестве параметра file задается список файлов и каталогов, информацию о которых необходимо отобразить.

Если параметр file не задан, то отображается информация о текущем каталоге:

 

 

# ls -il

 

 

 

 

 

 

 

 

total

3690

2

root

operator

512

Jul 23

22:04 .snap

3

drwxrwxr-x

10

-rw-rw-rw-

1

mysql

wheel

219378

Feb 22

2007

afawef

9

-rw-rw-rw-

1

mysql

wheel

0

Feb 22

2007

afqw

5

srwxrwxrwx

1

clamav

wheel

0

Jul 23

22:03

clamd

44

-rw-r--r--

1

nobody

wheel

3398249

Mar

1

2007

data

7

-rw-------

1

nobody

wheel

74716

Aug 21

2006

e8SWEqzMOk

6

-rw-r--r--

1

root

wheel

418

Aug 10

2006

fstab

45

srwxrwxrwx

1

mysql

wheel

0

Jul 23

22:03

mysql.sock

46

-rwxr-xr-x

1

root

wheel

2367

May 23

2006

netstart

47

lrwxr-xr-x

1

root

wheel

13

Sep 14

18:41

rmt -> /usr/sbin/rmt

49345

drwxr-xr-x

2

root

wheel

512

Aug

4

2006

ssl

16455

prw-------

1

root

wheel

0

Mar 16

2009

mc.pipe.96821

63

crw-r-----

1

root

operator

11

Jul 23

22:02

ad0

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

1.6.3. Просмотр файлов.

Для просмотра содержимого файлов используется команда cat. Наиболее часто она используется без дополнительных флагов в формате:

cat [file …]

Если в качестве параметра file задан список файлов, то они выводятся на экран в том порядке, в котором они указаны в списке без разделителей между файлами:

> cat first second

Это содержимое файла "first"

7

Это содержимое файла "second"

>

1.6.4. Переход по дереву каталогов.

Для перемещения по дереву каталогов используется команда cd.

1.6.5. Создание.

Создание нового файла выполняется командой cat в следующем формате: cat > file

В качестве параметра file необходимо задать имя нового файла. После выполнения этой команды осуществляется переход в режим ввода содержимого файла. Для завершения ввода текста, необходимо установить курсор

впустую строку, и нажать Ctrl+D, как это показано на примере:

>cat > newfile

Это текст нового файла

^D

Создание нового каталога выполняется командой mkdir: mkdir dirname

В качестве параметра dirname задается название нового каталога. Для создания каталога требуется наличие у пользователя права записи в родительском каталоге.

1.6.6. Слияние файлов.

Для слияния группы файлов и помещения их содержимого в новый файл используется следующая команда: cat [file …] > newfile

Например, cat first second > total помещает содержимое файлов first и second в файл total. Для присоединения file1 к файлу file2 используется следующая команда:

cat file1 >> file2

1.6.7. Копирование.

Команда копирования cp имеет следующие форматы:

cp file1 file2

копирует файл file1 в файл file2

cp files… directory

копирует группу файлов files в каталог directory

cp -r directory

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

содержимое каталога directory (включая и содержимое

newdirectory

подкаталогов)

 

cp -r directories…

копирует группу каталогов directories вместе с их

directory

содержимым в каталог directory

При указании группы файлов или каталогов допускается использование символов маски (*, ?).

1.6.8. Переименование/перемещение. Для этого используется команда mv:

mv oldname newname

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

(каталог) newname

mv files… directory

перемещает группу файлов files в каталог directory

mv -r directories…

перемещает группу каталогов directories вместе с их

directory

содержимым в каталог directory.

При указании группы файлов или каталогов допускается использование символов маски (*, ?). Если используется ключ -f, то при перемещении защищенных от записи файлов запрашивается подтверждение.

1.6.9.Удаление.

Для удаления файлов и каталогов используются соответственно команды rm и rmdir.

При задании в команде rm флага -i на каждый удаляемый файл будет запрашиваться подтверждение на удаление. Для удаления необходимо иметь право записи в родительском каталоге. Если используется ключ -f, то при удалении защищенных от записи файлов запрашивается подтверждение.

1.6.10. Создание связи.

Для создания связей используется команда ln:

8

ln source target

создает жесткую связь target на файл source (файл target не

должен существовать до выполнения команды)

ln sources… target_dir

в каталоге target_dir создаются жесткие связи на файлы

sources (каталог target_dir должен существовать)

ln —s source target

создает символическую связь target на файл (каталог) source

(файл target не должен существовать до выполнения команды)

ln —s sources… target_dir

в каталоге target_dir создаются символические связи на файлы

(каталоги) sources (каталог target_dir должен существовать)

Жесткие связи указывают на один и тот же индексный дескриптор файла. Поэтому при перемещении файлов связь продолжает действовать.

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

1.6.11. Поиск файлов.

Операционная система UNIX имеет очень мощное средство для поиска файлов. Это команда find. Ее упрощенный формат следующий:

find path_list directives

Параметр path_list указывает список каталогов в которых будет производиться поиск.

Параметр directives задает список условий поиска. Несколько примеров использования команды find.

1.find /usr —name '*.core' —exec rm {} \;

Удаляет из каталога usr все файлы с расширением core.

2.find ~ -mtime 1 —exec cp {} copydir \; -print

Копирует из личного каталога пользователя все файлы, которые сегодня модифицировались в каталог copydir. При этом имена всех найденных файлов выводятся на экран.

3. find / -user root

Выводит список файлов, владельцем которых является пользователь root.

2. Процессы.

FreeBSD является многозадачной операционной системой. Это означает, что одновременно может быть запущена более чем одна программа. Каждая программа, работающая в некоторый момент времени, называется процессом. Каждая команда, которую запускается, порождает хотя бы один процесс. Есть несколько системных процессов, запущенных все время и поддерживающих функциональность системы.

У каждого процесса есть уникальный номер, называемый process ID, или PID, и, как и у файлов, у каждого процесса есть владелец и группа. Информация о владельце и группе процесса используется для определения того, какие файлы и устройства могут быть открыты процессом с учетом прав на файлы, о которых говорилось ранее. Также у большинства процессов есть родительский процесс. Например, при запуске команд из оболочки, оболочка является процессом и любая запущенная команда также является процессом. Для каждого запущенного таким путем процесса оболочка будет являться родительским процессом. Исключением из этого правила является специальный процесс, называемый init(8). init всегда первый процесс, его PID всегда 1. init запускается автоматически ядром во время загрузки FreeBSD.

Две команды очень полезны для просмотра работающих в системе процессов, этоps(1) и top(1). Команда ps используется для получения списка запущенных процессов и может показать их PID, сколько памяти они используют, команду, которой они были запущены и т.д. Командаtop показывает запущенные процессы и обновляет экран каждые несколько секунд, что позволяет наблюдать за работой компьютера в реальном времени.

По умолчанию, ps показывает только принадлежащие пользователю процессы. Например:

% ps

PID

TT

STAT

TIME

COMMAND

298

p0

Ss

0:01.10

tcsh

7078

p0

S

2:40.88

xemacs mdoc.xsl (xemacs-21.1.14)

37393

p0

I

0:03.11

xemacs freebsd.dsl (xemacs-21.1.14)

48630

p0

S

2:50.89

/usr/local/lib/netscape-linux/navigator-linux-4.77.bi

48730

p0

IW

0:00.00

(dns helper) (navigator-linux-)

72210

p0

R+

0:00.00

ps

390

p1

Is

0:01.14

tcsh

7059

p2

Is+

1:36.18

/usr/local/bin/mutt -y

6688

p3

IWs

0:00.00

tcsh

10735

p4

IWs

0:00.00

tcsh

20256

p5

IWs

0:00.00

tcsh

262

v0

IWs

0:00.00

-tcsh (tcsh)

9

270

v0

IW+

0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16

280

v0

IW+

0:00.00 xinit /home/nik/.xinitrc -- -bpp 16

284

v0

IW

0:00.00 /bin/sh /home/nik/.xinitrc

285

v0

S

0:38.45 /usr/X11R6/bin/sawfish

Вывод ps(1) организован в несколько колонок. Идентификатор процесса PID обсуждался ранее. PID назначаются с 1 до 99999 и опять с начала, если последнее число будет превышено. Колонка TT показывает терминал (tty), на котором запущена программа. STAT показывает состояние программы. TIME – это количество времени центрального процессора, использованное программой – это обычно не время, прошедшее с запуска программы, поскольку большинство программы проводят много времени в ожидании некоторого события перед тем, как занять время процессора. Наконец, COMMAND это команда, которой программа была запущена.

У ps(1) есть множество различных опций, влияющих на выводимую информацию. Один из наиболее полезных наборов опций это auxww. a позволяет показать информацию о всех запущенных процессах, а не только тех, которыми владеет пользователь. u показывает имя пользователя, владеющего процессом, и информацию об используемой памяти. x показывает информацию о процессах-демонах и ww указывает ps(1) показать всю командную строку, вместо

обрезания ее, когда она станет слишком длинной, чтобы уместиться на экран.

 

 

 

 

Вывод top(1) похож на только что описанный. Обычно он выглядит так:

 

 

% top

 

 

load averages: 0.13, 0.09,

0.03

up 0+13:38:33 22:39:10

last pid: 72257;

 

47 processes: 1

running, 46 sleeping

7.8% system,

0.0% interrupt, 79.7% idle

CPU states: 12.6% user,

0.0%

nice,

Mem: 36M Active,

5256K

Inact,

13M Wired, 6312K Cache, 15M Buf, 408K Free

Swap:

256M Total, 38M Used, 217M Free, 15% Inuse

 

 

 

 

PID

USERNAME PRI NICE

SIZE

RES STATE

TIME

 

WCPU

CPU COMMAND

72257

nik

28

0

1960K

1044K

RUN

0:00

14.86%

1.42%

top

7078

nik

2

0

15280K

10960K

select

2:54

 

0.88%

0.88%

xemacs-21.1.14

281

nik

2

0

18636K

7112K

select

5:36

 

0.73%

0.73%

XF86_SVGA

296

nik

2

0

3240K

1644K

select

0:12

 

0.05%

0.05%

xterm

48630

nik

2

0

29816K

9148K

select

3:18

 

0.00%

0.00%

navigator-linu

175

root

2

0

924K

252K

select

1:41

 

0.00%

0.00%

syslogd

7059

nik

2

0

7260K

4644K

poll

1:38

 

0.00%

0.00%

mutt

...

 

 

 

 

 

 

 

 

 

 

 

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

Ниже идут несколько колонок, содержащих похожую на выводps(1) информацию. Как и раньше, это PID, время процессора, командная строка. top(1)показывает также величину занятой процессом памяти. Это значение разбито на две колонки, одна для общего объема, а другая для резидентного – общий объем показывает, сколько всего памяти нужно приложению, а резидентный показывает количество памяти, используемой в данный момент. Из этого примера видно, что Netscape требует почти 30 MB памяти, но в данный момент использует только 9 MB.

top(1) автоматически обновляет экран каждые две секунды; это значение можно изменить опциейs.

3. Демоны, сигналы, уничтожение процессов.

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

Эти программы называются демонами. Демоны – это персонажи греческой мифологии; хорошие или плохие, они были спутниками человека и, вообще говоря, выполняли полезную работу для людей. Почти как веб- и почтовые серверы выполняют полезную работу сегодня. Это причина, по которой талисманом BSD долгое время является веселый демон в тапочках и с вилами.

Есть соглашение, по которому имя программы, которая обычно запускается как демон, заканчивается на «d». BIND – это Berkeley Internet Name Daemon (выполняемая программа называется named), программа веб сервера Apache называется httpd, демон очереди печати – этоlpd и так далее. Это соглашение, а не жесткое правило, например, главный почтовый демон дляSendmail называетсяsendmail, а неmaild, как можно было предположить.

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

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]