Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...