|
|
па (например, в пути для полного имени файла). |
ENOTTY |
Inappropriate iocti |
Попытка выполнения системного вызова ioctl для |
|
for device |
устройства, которое не является символьным. |
EPERM |
Not owner |
Попытка модификации файла способом, разрешён- |
|
|
ным только владельцу и суперпользователю и запре- |
|
|
щённым остальным пользователям. Попытка опера- |
|
|
ции, разрешённой только суперпользователю. |
EPIPE |
Broken pipe |
Попытка записи в канал (pipe), для которого не суще- |
|
|
ствует процесса, принимающего данные. В этой си- |
|
|
туации процессу обычно отправляется соответст- |
|
|
вующий сигнал. Ошибка возвращается при игнориро- |
|
|
вании сигнала. |
EROFS |
Read-only file |
Попытка модификации файла или каталога для уст- |
|
system |
ройства (файловой системы), примонтированного |
|
|
только для чтения. |
ESRCH |
No such process |
Процесс с указанным PID не существует в системе. |
116
ПРИЛОЖЕНИЕ 2 ЗАДАНИЯ НА ЛАБОРАТОРНЫЕ РАБОТЫ
Лабораторная работа № 1. Знакомство с операционной системой Linux. Способы хранения информации
Задание на лабораторную работу
1.Поменять пароль.
2.Используя команду mount, описать, как построена файловая система на Вашей машине.
3.Используя команды оболочки, создать в домашнем каталоге дерево каталогов согласно схеме, приведённой ниже: в домашнем каталоге – cat1, содержащий каталоги cat2 и cat3. Каталог cat1/cat2 содержит каталог cat3. Каталог cat1/cat3 содержит каталог cat4. Каталог cat1/cat2 содержит каталог cat5. Каталог cat1/cat2/cat3 содержит cat6 и cat7. Каталог cat1/cat8 содержит символическую ссылку на каталог cat1/cat2/cat3/cat6. Каталог cat1 содержит каталог cat8.
4.Нарисовать граф, соответствующий созданной файловой системе.
5.Удалить каталоги с дублирующимися именами.
6.Удалить неразрешённую ссылку cat6.
7.Написать маски файлов для списков приведённых ниже:
file1, file5, file6, file8 file, fail, from, fax asd, dfg, qwe, dsa, fkl, jss adks, aeks, awks, alks
8.Скопировать файлы из домашнего каталога, начинающиеся с символов .b,
в каталог cat1/cat8.
9.Поменять права на скопированные файлы так, чтобы любой пользователь системы мог прочитать их содержимое, используя символьное представление прав доступа. Используя восьмеричное представление прав доступа, изменить права доступа к каталогу cat5 так, чтобы доступ к нему имели только пользователи группы.
10.Вывести содержимое всех каталогов, начиная с самого верхнего для задания (использовать только одну команду и один раз).
11.Определить тип командной оболочки, используемой Вами.
Контрольные вопросы
1.Как проходит процедура идентификации?
2.Что такое регистрационное имя?
3.Что такое командная оболочка? Как можно определить её тип?
4.Файл /etc/passwd. Зачем он нужен? Какова его структура?
5.Что такое файл?
6.Что такое файловая система? Как её можно описать? Команда mount.
7.Что такое каталог?
117
8.Что такое путь файла? Абсолютный и относительный путь?
9.Типы файлов, используемых в ОС Linux. Что такое метаданные?
10.Символьные и блочные устройства. Отличия и примеры?
11.Ссылки. Типы ссылок. Команда создания ссылки.
12.Файловая система UNIX. Назначение основных каталогов.
13.Команда определения текущего каталога.
14.Команда изменения текущего каталога.
15.Команда вывода содержимого каталога.
16.Электронный справочник man.
17.Генерация имён файлов. Символы «*», «?», [], цитирование.
18.Команда копирования файлов.
19.Команды удаления файлов и каталогов.
20.Команды создания и удаления каталогов.
21.Владельцы, группы и права.
22.Команды изменения прав. Символьные и восьмеричные представления прав доступа.
23.Изменение владельца и группы.
Лабораторная работа № 2. Командная оболочка bash
Задание на лабораторную работу
1.Определить тип используемой командной оболочки.
2.Вывести на экран значения всех переменных среды окружения. Проанализировать полученные результаты и объяснить значения известных вам переменных окружения.
3.Используя процедуру экспортирования, изменить приглашение командной строки так, чтобы в основном приглашении имя машины выводилось красным цветом, а в приглашении для второй строки выводился номер команды и символ «>».
4.Используя системную переменную HOME и список команд, выполнить следующие действия одной командой: перейти в домашний каталог, в случае удачного перехода вывести на экран содержимое файла
/etc/passwd.
5.Используя команды printf и read, вывести приглашение пользователю ввести команду. Если пользователь нажал Enter без ввода команды, сообщить ему об ошибке, в противном случае выполнить то, что он ввёл.
6.Оформить предыдущий пункт как скрипт и выполнить его.
7.Вывести значения всех переменных среды окружения в файл с именем
~/envs.
8.Используя системную переменную HOME, список, каналы и перенаправление вывода, выполнить следующие действия одной командой: перейти в домашний каталог, выдать содержимое файла /etc/passwd, отсортированное по имени пользователя в файл passwd.orig. Подсказка: команда сортировки – sort.
118
9.Используя перенаправление ввода с разделителем и перенаправление вывода, добавить в файл passwd.orig информацию о себе согласно формату записи файла /etc/passwd (все поля должны быть обязательно заполнены).
10.Описать содержимое файла ~/.bash_profile и всех файлов, которые он использует.
11.Написать скрипт, выполняющий следующие действия: вывести меню, содержащее все файлы с расширением .c текущего каталога. После выбора пользователем файла, скомпилировать его.
12.Написать скрипт, анализирующий параметры командной строки с использованием специальных переменных. Все параметры должны быть выданы на экран.
13.Написать скрипт, анализирующий параметры командной строки. Параметры должны быть следующие: -d каталог, -f файл, -c, -r. При анализе опций должны быть установлены переменные: DIR, FILE, COMPIL, RUN. После анализа опций выполнить следующие действия: если определена переменная DIR и такой каталог существует, то выдать его содержимое. Если определена переменная FILE и такой файл существует, то выдать его содержимое на экран. Если переменная не определена, то в качестве имени файла использовать .bashrc. Если определена переменная COMPIL и определена переменная FILE, то откомпилировать указанный файл. Если результат компиляции положительный, то, если определена переменная RUN, исполнить откомпилированный файл.
14.Используя цикл for, объединить все файлы с расширением txt в текущем каталоге в файл ~/textx.txt. Для объединения использовать перенаправление потоков ввода-вывода.
Контрольные вопросы
1.Что такое командная оболочка?
2.Что такое команда? Формат команды?
3.Что означает символ «\», введённый в командной строке перед нажатием
Enter?
4.Что такое скрипт?
5.Что такое среда окружения? Зачем она нужна?
6.Как задать значение переменной окружения и как вывести его на экран?
7.Переменная оболочки. Отличие от переменной окружения.
8.Как задать формат командной строки? Отличие PS1 от PS2.
9.Списки команд. Логические операции над командами.
10.Подстановка команд, переменных и арифметических выражений.
11.Команда read.
12.Зачем нужны файлы .bash*. Почему они не имеют прав на исполнение?
13.Условный оператор if-fi. Команда test.
14.Блок case-esac.
15.Специальные переменные.
16.Цикл select.
17.Циклические конструкции.
119
18.Функции.
19.Команда getopts.
20.Понятие процесса. Типы процессов. Атрибуты процесса. Фоновое выпол-
нение команд. Команды jobs, fg, bg, ps, pstree.
21.Каналы ввода-вывода. Перенаправление каналов.
Лабораторная работа № 3. Понятие процесса, группы процессов, сеансов. Фоновое и интерактивное выполнение задач
Задание на лабораторную работу
1.Используя команду ps, вывести информацию обо всех процессах системы и ответить на следующие вопросы: 1) Сколько процессов в системе? 2) Сколько процессов принадлежит Вам?
2.Используя форматный вывод команды ps нарисовать дерево процессов, принадлежащих всем Вашим сеансам. Определить, сколько сеансов и групп порождено Вами, сколько процессов входит в каждый сеанс и в каждую группу.
3.Используя команду pstree, вывести дерево процессов в файл ~/pstrees. Проанализировать результат работы программы. Сравнить с результатами предыдущего пункта.
4.Используя команду top, описать наиболее активные процессы в системе.
5.Выполнить команду ls -laR / | sort и остановить её выполнение (Ctrl+Z). Выполнить команду man ls в фоновом режиме. Используя команду jobs, посмотреть состояние фоновых задач. Перевести задачу 2 в интерактивный режим и объяснить, почему выполнение указанной команды было автоматически приостановлено. Ответить на вопросы: 1) Будут ли указанные процессы (ls и sort) входить в одну группу или в разные? 2) Какие идентификаторы имеют эти группы?
Контрольные вопросы
1.Отличие процесса от программы или задачи.
2.Типы процессов.
3.Группы процессов? Зачем используются?
4.Сеансы. Зачем они используются?
5.Фоновое выполнение задач. Способы перевода задачи в фоновый режим.
6.Атрибуты процесса.
7.Выделение идентификатора процессу.
8.Что такое приоритет процесса? Зачем он нужен?
9.Что такое идентификатор родительского процесса? Зачем он используется?
10.Что такое терминальная линия? Какие процессы не используют терминальных линий?
11.Состояние процесса.
120