LAB2-1 отчёт


НИУ МЭИ (ТУ)
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
Цель лабораторной работы
Целью данной работы является ознакомление с базисными понятиями командного интерфейса пользователя ОС UNIX. Основная практическая цель - выполнение индивидуальных заданий в рамках сеанса работы в среде ОС UNIX, суть которых состоит в выполнении процедур начальной установки, входа в систему, проверки программного и системного окружения, освоении приемов переназначения ввода/вывода и конвейеризации, использовании сервисных средств ОС UNIX для самообучения.
Командный интерфейс пользователя. Основные сведения
Для всех пользователей, вот уже скоро двадцать пять лет сталкивающихся с ОС UNIX, основной проблемой является отсутствие удобного и естественного, т.н. "дружественного" интерфейса пользователя. В семействах ОС типа UNIX в связи с чрезвычайно широким разнообразием видеотерминального оборудования и по историческим причинам господствует идеология построчного диалога с пользователем. При этом основной принцип построения пользовательского интерфейса - "в ОС типа UNIX: если что-то можно, то это можно везде и в любом количестве". Подобный подход означает достаточность возможностей даже простейших алфавитно-цифровых видеотерминалов для ввода любых UNIX-команд.
Итак, для ввода любой команды ОС UNIX правила командного интерфейса пользователя предоставляют следующий строчный формат:
$ <команда> [<ключи_вызова>] [<параметры_вызова>] <ВВ>
, где
$ - системный промптер ("подсказка", выводимая в качестве признака
готовности ОС UNIX воспринимать ввод команды пользователя);
<команда> - любая из команд UNIX, либо утилита ОС;
<ключи-вызова> - последовательность однобуквенных символов - кодов
режимов исполнения команды, префиксируемая символом "-" либо "--",
либо "+" (ключи еще иногда называют флагами);
<параметры_вызова> - аргументы команды;
[...] - необязательное присутствие значения;
<...> - нажатие клавиши терминала, обозначаемой "...";
<ВВ> - нажатие клавиши "ENTER" ("RETURN", "CR/LF", "ввод" , в
зависимости от вида терминала.
Признаком завершения реакции системы на введенную команду является появление на экране видеотерминала пользователя системного промптера. Для входа в режим взаимодействия с ОС типа UNIX и получения доступа к командному интерфейсу пользователь один раз за сеанс работы должен пройти процедуру регистрации, т.е. сообщения системе своих индивидуальных, присвоенных системным администратором, параметров входа: login-имени и, может быть, пароля (при вводе на экране видеотерминала не отображается). Процедура регистрации может быть проиллюстрирована следующим фрагментом:
login: brig1 <ВВ>
[password:....<ВВ>]
$
где
login, password и $ - реакция системы;
brig1 - пример login-имени пользователя – первой бригады;
.... - некоторая последовательность нажимаемых клавиш клавиатуры,
составляющая пароль, для первой бригады – brig01 (на экране не отображается)
В конце сеанса пользователю для правомочного завершения работы с системой необходимо отсоединиться от ОС с помощью команд logout, exit, halt либо reboot (последние две - только если установлены права использования).
После регистрации в системе и получения системного промптера пользователь получает в распоряжение на время сеанса часть файловой системы ОС типа UNIX с собственной "домашней" директорией и копией командной оболочки. Командный интерфейс пользователя подразумевает для каждой команды наличие трех стандартных файлов:
stdin - файла ввода информации,
stdout - файла вывода информации,
stderr - файла вывода сообщений об ошибках (файл диагностики).
По умолчанию в ОС типа UNIX для процесса исполнения UNIX-команды пользователя stdin по умолчанию назначен на клавиатуру, а stdout - по умолчанию на экран видеотерминала пользователя.
Для переназначения стандартных файлов ввода либо вывода существуют в ОС типа UNIX процедуры переадресации:
> - переадресация вывода (запись не в stdout по умолчанию),
< - переадресация ввода (чтение не из stdin по умолчанию),
>> - переадресация ввода с добавлением в конец.
Кроме переадресации связь между процессами исполнения двух команд (UNIX-процессами в общем смысле) может быть осуществлена в виде т.н. конвейера - закорачивания выхода одного UNIX-процесса на вход другого с помощью процедуры программного канала. Символом для обозначения программного канала является вертикальная черта |. Так например, в командной строке, вида:
$ <команда-1>|<команда-2>
, где <команда-i> имеет смысл, определенный выше, выход процесса,
определяемый командой <команда-1>, является входом процесса,
определяемого командой <команда-2>.
Командный интерфейс пользователя кроме того предоставляет возможность UNIX-пользователю с помощью команд самого командного интерфейса изучать свойства наиболее употребительных команд этого интерфейса и настраивать, изменять, модифицировать комплекс программно-технических средств реализации этого интерфейса. Наиболее простым средством информационного обеспечения командного интерфейса является команда man, которой в качестве параметра вызова передается имя команды, а для настройки служит команда stty. В стандартном, наиболее часто встречающемся варианте, пользователь для реализации интерфейса имеет в распоряжении алфавитно-цифровой терминал типа VT52/VT100, где для редактирования командной строки используются следующие последовательности:
<ctrl>+<h> - для удаления отдельного символа в командной строке;
<@> - удаление (смысловое) набранной, но не введенной строки
командного интерфейса ("сброс команды");
<DEL> - завершение "зависнувшего" процесса и восстановление
системного промптера;
а для управления выводимой процессами на экран информации служат
последовательности:
<ctrl>+<S> - приостановка вывода;
<ctrl>+<Q> - возобновление вывода.
Задание к лабораторной работе
Домашняя подготовка
1. Изучить по рекомендованной литературе следующие вопросы и темы:
- процессы и пользователи, их взаимодействие и категории; - системные ресурсы пользователя; - вход в систему, выход из системы;
- файловая система, файлы и директории; - рабочая или текущая директория, "домашняя" директория; - терминал пользователя и его параметры.
2. Изучить по рекомендованной литературе и с помощью команды man функциональное назначение и особенности следующих команд командного интерфейса:
- login,вход в систему под учетной записью
- logout (exit),завершение сеанса работы
- ls,список файлов и каталогов
- pwd,показать текущий каталог
- who,показать залогиненных пользователей на терминале
- date,вывести или установить дату и время
- (time),вывести время
- ps,вывести состояние процессов (по дефолту процессы с UID юзера)
- cd,перейти в домашний каталог. cd dir = перейти в dir- file,определение типа файла
- cat,вывести содержимое файла
- more,вывод файла постранично без прокрутки
- man,вывод системной документации (man команда)
- stty.установка характеристик терминала (stty [-a] [-g] [характеристика] )3. Подготовить ответы по вопросам коллоквиума.
Вопросы коллоквиума
1). Что такое многопользовательская операционная система?
Терминальное решение, позволяющее на базе одного компьютера организовать несколько независимых мест – терминалов – с возможностью одновременной работы.
2). Что такое мультизадачная операционная система?
ОС, обеспечивающая возможность параллельной (псевдопараллельной) обработки нескольких процессов.
3). Что такое мобильная операционная система?
ОС, которая легко переносится с компьютера с одной аппаратной платформой на компьютер с другой аппаратной платформой.
4). Что такое ядро ОС типа UNIX?
Резидентная в памяти часть UNIX, которая загружается с диска или по сети при включении компьютера. Управляет ресурсами, диспетчеризует задачи, мониторит память, поддерживает файловую систему.
5). Каким образом ОС типа UNIX "различает" пользователей системы?
По его UID и GUID.
6). Когда заканчивается регистрация пользователя в системе?

7). Кто устанавливает идентификатор и пароль пользователя в системе?
Админ.
8). Есть ли различие между понятиями "идентификатор пользователя" и "имя терминала пользователя"?
Да.
9). Есть ли различие между понятиями "рабочая директория" и "домашняя директория" для пользователя?
Рабочая директория (текущая) – та, в которой в данный момент находится юзер. Домашняя директория – та, которая заводится для каждого нового пользователя в системе и становится текущей после его входа в систему.
10). Что такое "процесс" в ОС типа UNIX?
Единица работы/управления, потребитель ресурсов. Концептуально выполняется на своем виртуальном процессоре в своем виртуальном пространстве.
11). Какие команды могут информировать пользователя о процессах этого пользователя?
ps12). Информация, записываемая некоторым процессом в stdout 25 строк текста. Какими средствами, Вам уже известными, можно прочитать эту информацию пользователю?
tee13). Каким образом (уже известным Вам) можно создать файл нулевой длины?
1) touch petya2) dd if=/dev/null of=petya14). Каким образом можно сохранить информацию о времени входа в систему в виде файла?
finger username | head –n 4 | tail –n 1 | tee userlogin.txt
15). Каким образом можно сохранить информацию о имени терминала пользователя в виде файла?
who –m | grep ^username | tee userterminal.txt
16). Каким образом (возможно, несколькими способами) можно в одном файле сохранить
информацию о дате входа в систему, текущем пути к директории пользователя и дате, непосредственно предшествующей выходу из системы?
Finger username | tee userinfo.txt
17). Каким образом узнать соответствие идентификаторов активных пользователей и имен терминалов?
who18). Что такое блокориентированный специальный файл?
Файл устройства, использующийся тогда, когда данные передаются пакетами фиксированного размера. Используют механизм буфера, позволяющий увеличить эффективность передачи данных путем сохранения копии данных в памяти.
19). Что такое байториентированный специальный файл?
Файл устройства, использующиеся для небуферного ввода/вывода. Обеспечивают посимвольный ввод/вывод.
20). Как определить наличие в директории обычных файлов?
В команде ls –la простые файлы отмечаны « - « в описании.
21). Как определить наличие в директории блокориентированных специальных файлов?
22). Как определить наличие в директории байториентированных специальных файлов?
23). Как определить наличие в директории поддиректории?
В команде ls –la директории отмечаны « d « в описании.
24). Что такое группа пользователей в системе UNIX?
Множество пользователей, занимающихся общими задачами.
25). Для чего служат специальные файлы в ОС типа UNIX?
Для обозначения физических устройств компьютера. Служат для организации взаимодействия с периферийными устройствами.
26). Как определить, является ли какой-либо файл в директории пользователя ОС типа UNIX исполняемым непосредственно?
В команде ls –la исполняемые файлы соответственно помечены.
27). С помощью какой из команд ОС типа UNIX можно определить наличие среди файлов пользователя stdin, stdout и stderr?
ls –r stdin28). Какие категории пользователей в ОС типа UNIX Вы можете назвать?
1) Суперпользователь (бог админ) – неограниченные права.
2) Обычный пользователь – права с ограничениями, установленными админом.
3) Специальный пользователь – права с ограничениями, установленными ему админом для работы с конкретным приложением.
4) Псевдопользователь – нет никаких прав, он вообще не идентифицируется системой.
29). Могут ли быть в ОС типа UNIX два и более пользователя с одинаковыми именами?
Да. Их UID все равно будут отличаться, хоть и имена будут совпадать.
30). Могут ли существовать одновременно в ОС типа UNIX два и более процесса с одинаковыми именами пользователя и разными идентификаторами процесса?
Могут
31). Могут ли существовать одновременно в ОС типа UNIX два и более процесса с одинаковыми идентификаторами процесса и разными именами пользователя?
Ненене, такая штука не прокатит
32). Из скольких полей должно состоять имя файла в ОС типа UNIX?
Существует относительное имя (doc/text.txt) и полное (/home/user01/doc/text.txt)
33). Из скольких полей может состоять имя файла в ОС типа UNIX?
Может быть краткое имя для использования в текущем каталоге: ls –l .profile34). К чему может привести применение команды cat к исполняемому файлу?
К открытию файла?
4. Просмотрите лабораторное задание, соответствующее Вашему варианту и обдумайте его выполнение.
Лабораторное задание
1). Перед выполнением лабораторного задания:
- ответьте на вопросы коллоквиума, заданные преподавателем;
- получите у администратора системы (преподавателя) регистрационные имя пользователя и пароль (они выдаются на бригаду) .2). Зарегистрируйтесь в системе с указанного преподавателем терминала.
vt2 login: brig2 <BB>
Password: . . . <BB>

3). Определите следующие параметры среды:
- текущее время;
- имя Вашего терминала;
- место Вашей рабочей ("домашней") директории;
- имена и соответствующие им терминалы всех активных пользователей, если они есть;
- номера всех доступных для Вашего наблюдения активных процессов;
- параметры Вашего терминала.
$date
Wed Nov 6 13:45:47 MSK 2013
$tty/dev/vc/1
$pwd/
$who
brig2tty12013-11-0613:44
$ps

4). Создайте в Вашей директории пустой файл (файл, не содержащий никакой информации) с именем first.snap.
$touch first.snap$

5). В соответствии с порядковыми номерами членов бригады в журнале учебной группы выполните пункты задания из ниже приведенной таблицы , при этом каждый член бригады выполняет пункты N, N-1 и N+1.
N в
журналеСодержание пункта задания
1 или
17 Создайте в Вашей "домашней" директории файл contens.of.parent и запишите в него имя и листинг каталога, подкаталогом которого является Ваша "домашняя" директория
2 или
18 Создайте в Вашей "домашней" директории файл contens.of.par.sort содержащий отсортированный по времени создания и, кроме того, по времени последнего доступа листинг каталога, подкаталогом которого является Ваша "домашняя" директория
3 или
19 Создайте в Вашей директории файл time.my, содержащий текущее значение даты и времени, причем во второй строке файла зафиксируйте десятичный номер текущей недели в году, в третьей строке - десятичный номер года вместе с номером столетия, в четвертой - информацию о часовом поясе
$(date; date “+%U%n%Y %C%n%Z”) > date.my
$
4 или
20
Создайте в Вашей директории файл time.our, содержащий кроме текущего значения даты и времени, национальное представление полного названия дня недели, его десятичного номера и полного названия месяца
$(date; date “+%A %u %B”) > date.our$

5 или
21
Создайте в Вашей директории файл users.of.session , содержащий имена и номера терминалов всех активных пользователей, текущее значение времени и имя Вашего терминала
$(who; date “+%T”;tyy) > users.of.session$

6 или
22
Создайте в Вашей директории файл process.of.session, содержащий список всех выполняющихся процессов, текущее значение времени и имя Вашего терминала
$(ps; date “+%T”; tty) > process.of.session$

7 или
23
Создайте в Вашей директории файл my.oun , содержащий ее имя и содержимое, имя Вашего терминала и регистрационное имя пользователя
$(ls –e; tty; who am i) > my.oun
$

8 или
24
------- Создайте в Вашей директории файл partent.of.mine, cодержащий листинг каталога, подкаталогом которого является Ваша директория, а также информацию о текущем значении времени
$(ls ..; date) > partent.of.mine$

9 или
25
Создайте в Вашей директории файл all.of.my.parent, содержащий вывод содержимого всех подкаталогов каталога, подкаталогом которого является Ваша директория
|
10 или
26
Создайте в Вашей директории файл users.and.time, содержащий имена и номера терминалов всех активных пользователей, имя Вашей директории и имя каталога, подкаталогом которой является Ваша директория
11 или
27
Создайте в Вашей директории файл eleven.example, содержащий список всех выполняющихся процессов, имя Вашей директории и имя каталога, подкаталогом которой является Ваша директория
12 или
28
Создайте в Вашей директории файл zwoelf.exam, содержащий информацию о собственно директории а также об ее содержимом| с указанием размера файлов директории в блоках
13 или
29
Создайте в Вашей директории файл learn.no1, содержащий время начала получения распечатки содержимого текущей директории, саму распечатку и время окончания распечатки (времена фиксируются| с точностью до ввода соответствующей команды выдачи времени)
14 или
30
Создайте в Вашей директории файл example.sample, содержащий время начала получения информации обо всех активных пользователях в системе, саму эту информацию и время окончания| выдачи этой информации (времена фиксируются с точностью до ввода соответствующей команды выдачи времени)
15 или
31 Создайте в Вашей директории файл process.es, содержащий время начала получения информации о всех активных процессах в системе, саму эту информацию и | (приблизите время окончания выдачи этой информации (времена фиксируются с точностью до ввода соответствующей команды выдачи времени)
16 или
32 Создайте в Вашей директории файл coloumn.partent.ls, содержащий распечатку каталога, подкаталогом которого является Ваша директория, сформированный в несколько колонок, а также имя этого каталога. |

6). Убедитесь в том, что Ваша директория непустая. Создайте файл second.type, содержащий информацию о типах всех файлов Вашей директории, включая и файл second.type.
$ls | wc –l
31
$ls –la > second.type
7). Вызовите команду man для просмотра информации о командах: login,logout (exit), ls, pwd, who, date (time), ps, cd, file, cat, more, man, stty. Отметьте в создаваемом Вами файле third.exeption имена команд, по которым отсутствует информация при обращении к команде man. Не смущайтесь тем, что сообщения команды man не на русском языке - это язык, хотя и напоминающий английский, однако максимально адаптированный к международному жаргону программистов и потому должен быть понятен Вам.
По всем командам в man есть описание. Файл third.exception остался пустым.
8). Повторите пункт 3 лабораторного задания, сохраняя всю необходимую информацию в файле first.snap и используя в качестве разделителя данных о требуемых параметрах последовательность символов типа "-------------...----" (или иных, по Вашему желанию). Отметьте совпадения и несовпадения при выполнении команд пункта 3 и содержимого файла first.snap.
$(date; echo “---“; tty; echo “---“; pwd; echo “---“; who) > first.snap
$

9). Попробуйте добиться того, чтобы вывод на Ваш терминал осуществлялся темными символами на светлом фоне.
Вместо этого мы изменили промптер:
$export PS1=”\e[0;31m[\[email protected]\h \W]\$ \e[m”

10). Завершите сеанс работы с ОС.
$logout

Контрольные вопросы
1). Могут ли одновременно в ОС типа UNIX существовать два пользователя с одним и тем же именем, но работающие на разных терминалах?
2). Могут ли одновременно в ОС типа UNIX существовать два обычных разноименных пользователя, запускающие свои задания с одного и того же терминала?
3). Могут ли в одной и той же директории работать два различных пользователя одновременно?
4). Может ли один и тот же пользователь одновременно выполнять более одного процесса и при этом каждый процесс в своей директории?
5). Как можно выяснить связь между процессом с известным идентификатором и командой или программой, соответствующей этому процессу?
6). Какие файлы позволяют бесконфликтно применять к себе команду cat?
7). Какие команды из изученных в данной лабораторной работе возможно объединить через конвейер?
8). Какие команды из изученных в данной лабораторной работе допускают переназначение ввода и каким образом?
9). Какие команды из изученных в данной лабораторной работе допускают переназначение вывода и каким образом?
10). Какие команды из изученных в данной лабораторной работе допускают переназначение диагностики и каким образом?
11). Какие команды из изученных в данной лабораторной работе в результате верного вызова формируют ненулевой stderr и нулевой stdout?
12). Каким образом можно установить последовательность регистраций всех активных пользователей?
13). Может ли в ОС типа UNIX одновременно исполняться одинаковые процессы с одинаковыми именами у разных пользователей?
14). Может ли в ОС типа UNIX пользователь, перемещаясь по иерархической файловой структуре, попадать в директории, принадлежащие другим пользователям?
15). Какой последовательностью может считаться конец файла в ОС типа UNIX?
16). Поддиректорией какой директории является Ваша рабочая директория и поддиректорией какой директории является директория, поддиректорией которой является Ваша рабочая директория.

Приложенные файлы

  • docx 22416605
    Размер файла: 48 kB Загрузок: 10

Добавить комментарий