Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
1. Shell-программа выводит имена тех каталогов в каталоге, которые в себе содержат каталоги. Имя каталога задано параметром Shell-программы.
2. Shell-программа просматривает каталог, имя которого указано параметром Shell-программы и выводит имена встретившихся каталогов. Затем осуществляет переход в родительский каталог, который становится текущим и повторяются указанные действия до тех пор, пока текущим каталогом не станет корневой каталог. Форма вывода результата:
3. Shell-программа подсчитывает количество и выводит перечень каталогов в хронологическом порядке (по дате создания) в поддереве, начиная с каталога, имя которого задано параметром Shell-программы. Форма вывода результата:
4. Shell-программа объединяет все временные файлы с указанным суффиксом (например,.tmp) в поддереве, начиная с каталога, имя которого задано параметром Shell-программы. Результат объединения помещается либо в указанный Shell-программой файл, либо выводится на экран в форме:
5. Shell-программа периодически с некоторым интервалом удаляет все временные файлы с указанным суффиксом (например,.tmp) в поддереве, начиная с каталога, имя которого задано параметром Shell-программы и выводит при этом список оставшихся файлов в форме:
6. Shell-программа выводит содержимое каталога, имя которого указано параметром Shell-программы. При выводе сначала перечисляются имена каталогов, а затем в алфавитном порядке имена файлов с указанием их длин, даты создания и числа ссылок на них.
7. Shell-программа подсчитывает количество и выводит список всех файлов (без каталогов) в порядке уменьшения их длин в поддереве, начиная с каталога, имя которого задано параметром Shell-программы. Форма вывода результата:
8. Shell-программа просматривает каталог, имя которого указано параметром Shell-программы и выводит имена встретившихся файлов. Затем осуществляет переход в родительский каталог, который становится текущим и повторяются указанные действия до тех пор, пока текущим каталогом не станет корневой каталог. Форма вывода результата:
9. Shell-программа подсчитывает количество и выводит список всех файлов (без каталогов) в алфавитном порядке в поддереве, начиная с каталога, имя которого задано параметром Shell-программы. Форма вывода результата:
10. Shell-программа выводит имена тех каталогов в каталоге, которые в себе не содержат каталогов. Имя каталога задано параметром Shell-программы.
Лабораторная работа №19
Файловые системы и диски в Linux.Файловая система ОС UNIX
Цель: получение практических навыков работы с файловыми системами, дисками и самостоятельной работы с документацией команд. Ознакомиться с файловой системой ОС UNIX, механизмами ее функционирования, основными элементами файловой системы: суперблок, описатели файлов, типы файлов, список свободных описателей файлов, список свободных блоков.
Команды POSIX для работы с ФС и дисками (должны быть во всех операционных системах)
df - выводит информацию о подмонтированных дисках
Команды и конфигурационные файлы в LINUX
fdformat - форматирование гибкого диска
mformat - создает файловую систему MS-DOS
fsck - проверка файловой системы
mkfs - создание файловой системы (форматирование)
mkswap - создание раздела подкачки
swapon - активизация раздела подкачки
fdisk - разбивка диска
mount - монтирование файловых систем
umount - размонтирование файловых систем
df - выводит информацию о подмонтированных дисках
/etc/fstab - файл для описания подключаемых файловых систем
Команды для работы с Windows
Chkdsk - вывод на экран отчета о состоянии диска
Chkntfs - просмотр или задание планирования автоматической проверки системы для томов файловых систем FAT, FAT32 или NTFS при запуске компьютера.
Cipher - отображение или изменение шифрования папок и файлов на томах NTFS Compact - вывод сведений или изменение уплотнения файлов и каталогов в разделах NTFS
Convert - преобразование томов с файловой системой FAT и FAT32 в тома с файловой системой NTFS.
Defrag - доиск и объединение фрагментированных файлов
DiskPart - Программа DiskPart.exe — это работающий в текстовом режиме командный интерпретатор, который позволяет управлять объектами (дисками, разделами или томами) с помощью сценариев или команд, вводимых с командной строки.
Format - Форматирование диска
Fsutil (поддерживаются только с версии Windows 5.1) - является служебной программой командной строки, которая используется для выполнения связанных задач файловых систем FAT и NTFS.
Подкоманды для нее:
behavior - запрашивает, изменяет, включает или отключает настройки для создания имен файлов с длиной 8.3 символа, для возможности отображения расширенных символов в имена файлов длиной 8.3 символа в томах NTFS, для обновления штампа времени последнего доступа к томам NTFS, частоты событий, записанных в системных журнал, и количества места на диске, зарезервированного зоной основной таблицы файлов. dirty - запрос установки «грязного» бита тома. Задает «грязный» бит тома. Когда установлен «грязный» бит тома, autochk автоматически проверит том на наличие ошибок при следующей перезагрузке компьютера.
file - поиск файла по идентификатору безопасности, запрос файла в размещенных диапазонах, установка короткого имени файла, допустимой длины данных или нулевых данных для файла.
fsinfo - перечисляет все диски, запрашивает тип диска, сведения о томе, специальные сведения о томе NTFS или статистику файловой системы. hardlink - создает жесткую ссылку.
objectid Обычно используется специалистами по технической поддержке. Управляет идентификаторами объектов, которые используются Windows XP для отслеживания объектов, таких как файлы и каталоги.
quota - управляет дисковыми квотами в томах NTFS
reparsepoint - работа с точками монтирования
sparse - управление разреженными файлами.
usn - управление журналом изменения, в котором сохраняется архив всех изменений файлов в томе.
volume - размонтирование тома и отображение свободного места на диске.
Label - служит для создания, изменения или удаления метки тома (т. е. имени) диска.
Mountvol - служит для создания, удаления и получения списка точек подключения тома.
Subst - устанавливает соответствие пути в файловой системе заданному диску.
Vol - отображает метку тома диска и серийный номер, если они существуют
Интерфейс между пользовательской программой и внешним устройством (или между двумя пользовательскими программами) в ОС UNIX осуществляется в рамках единой структуры данных, называемой файлом ОС UNIX.
Всякий файл ОС UNIX в соответствие с его типом может быть отнесен к одной из следующих четырех групп: обычные файлы, каталоги, специальные файлы, каналы.
Обычный файл представляет собой совокупность блоков диска, входящих в состав файловой системы ОС UNIX. В указанных блоках может быть произвольная информация.
Каталоги представляют собой файлы особого типа, отличающиеся от обычных, прежде всего, тем, что осуществить запись в них может только ядро ОС UNIX, в то время как доступ по чтению может получить любой пользовательский процесс, имеющий соответствующие полномочия. Каждый элемент каталога состоит из двух полей: поля имени файла и поля, содержащего указатель на описатель файла, где хранится вся информация о файле: дата создания, размер, код защиты, имя владельца и т.д. В любом каталоге содержится, по крайней мере, два элемента, содержащие в поле имени файла имена "." и "..". Элемент каталога, содержащий в поле имени файла контекст ".", в поле ссылки содержит ссылку на описатель файла, описывающий этот каталог. Элемент каталога, содержащий в поле имени файла контекст "..", в поле ссылки содержит ссылку на описатель файла, в котором хранится информация о родительском каталоге текущего каталога.
Специальные файлы - это некоторые файлы, каждому из которых ставится в соответствие свое внешнее устройство, поддерживаемое ОС UNIX и имеющее специальную структуру. Его нельзя использовать для хранения данных, как обычный файл или каталог. В то же время над специальным файлом можно производить те же операции, что и над обычным файлом: открывать, вводить и/или выводить информацию и т.д. Результат применения любой из этих операций зависит от того, какому конкретному устройству соответствует обрабатываемый специальный файл, однако в любом случае будет осуществлена соответствующая операция ввода-вывода на внешнее устройство, которому соответствует выбранный специальный файл.
Четвертый вид файлов - каналы - будет рассмотрен отдельно в последующих лабораторных работах.
Cистемные функции ОС UNIX для работы с файловой системой
Возвращают дескриптор файла | open, creat, dup, pipe, close |
Преобразуют имя в описатель | open, creat, chdir, chmod, stat, mkfifo, mound, mknod, link, unmount, unlink, chown |
Назначают inode | creat, link, unlink, mknod |
Работают с атрибутами | chown, chmod, stat |
Ввод/вывод из файла | read, write, lseek |
Работают со структурой файловой системы | mount, unmount |
Управляют деревьями | chmod, chown |
Остановимся на тех из них, которые требуются для выполнения лабораторной работы. Для получения информации о типе файла необходимо воспользоваться системными вызовами stat() (fstat()). Формат системных вызовов stat() (fstat()):
#include <sys/types.h>
#include <sys/stat.h>
int stat(const char *name, struct stat *stbuf);
int fstat(int fd, struct stat *stbuf);
Оба системных вызова помещают информацию о файле (в первом случае специфицированном именем name, а во втором - дескриптором файла fd) в структурную переменную, на которую указывает stbuf. Вызывающая функция должна позаботиться о резервировании места для возвращаемой информации; в случае успеха возвращается 0, в противном случае -1 и код ошибки в errno. Описание структуры stat содержится в файле sys/stat.h. С небольшими модификациями она имеет вид:
struct stat
{
dev_t st_dev; /* device file */
ino_t st_ino; /* file serial inode */
ushort st_mode; /* file mode */
short st_nlink; /* number of links */
ushort st_uid; /* user ID */
ushort st_gid; /* group ID */
dev_t st_rdev; /* device ident */
off_t st_size; /* size of file */
time_t st_atime; /* last access time */
time_t st_mtime; /* last modify time */
time_t st_ctime; /* last status change */
};
Поле st_mode содержит флаги, описывающие файл. Флаги несут следующую информацию:
S_IFMT 0170000 – тип файла
S_IFDIR 0040000 – каталог
S_IFCHR 0020000 – байт-ориентированный специальный файл
S_IFBLK 0060000 – блок-ориентированный специальный файл
S_IFREG 0100000 – обычный файл
S_IFFIFO 0010000 – дисциплина FIFO
S_ISUID 04000 – идентификатор владельца
S_ISGID 02000 – идентификатор группы
S_ISVTX 01000 – сохранить свопируемый текст
S_ISREAD 00400 – владельцу разрешено чтение
S_IWRITE 00200 – владельцу разрешена запись
S_IEXEC 00100 – владельцу разрешено выполнение
Символьные константы, четыре первых символа которых совпадают с контекстом S_IF, могут быть использованы для определения типа файла.
Большинство системных вызовов, работающих с каталогами, оперируют структурой dirent, определенной в заголовочном файле <dirent.h>.
struct dirent
{
ino_t d_ino; /* номер индексного дескриптора */
char d_name[DIRSIZ]; /* имя файла */
}
Создание и удаление каталога выполняется системными вызовами mkdir() и rmdir(). При создании каталога посредством системного вызова mkdir() в него помещается две ссылки ("." и "..").
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int mkdir (char *pathname, mode_t mode);
int rmdir (char *pathname);
Открытие и закрытие каталога выполняется системными вызовами opendir() и closedir(). При успешном открытии каталога системный вызов возвращает указатель на переменную типа DIR, являющуюся дескриптором каталога, определенную в файле dirent.h и используемую при чтении и записи в каталог. При неудачном вызове возвращается значение NULL.
#include <sys/types.h>
#include <dirent.h>
DIR *opendir (char *dirname);
int closedir (DIR *dirptr); /* dirptr - дескриптор каталога */
Для смены каталога служит системный вызов chdir():
#include <unistd.h>
int chdir (char *pathname);
Чтение записей каталога выполняется системным вызовом readdir(). Системный вызов readdir() по номеру дескриптора каталога возвращает очередную запись из каталога в структуру dirent, либо нулевой указатель при достижении конца каталога. При успешном чтении, указатель каталога перемещается к следующей записи. Дополнительный системный вызов rewinddir() переводит указатель каталога к первой записи каталога.
#include <sys/types.h>
#include <dirent.h>
struct dirent *readdir (DIR *dirptr);
void rewinddir (DIR *dirptr);
Дата публикования: 2015-10-09; Прочитано: 1940 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!