Лабораторная работа 1 Изучение основных команд для работы с файлами. 1 Общие сведения
Скачать 348.5 Kb.
|
5 Средства оболочки предназначенные для работы с процес сами Список — последовательность из одного или более конвейеров разделенных операторами ;, &, && или ||. Более высокий приоритет у операторов && и ||. Если команда завершается оператором &, то оболочка выполняет ее в фоновом режиме. Если между двумя командами стоит оператор &&, то вторая команда будет выполнена только в том случае, если первая завершится успешно. Если между двумя командами стоит ||, то вторая команда будет выполнена только в том случае, если код завершения первой команды отличен от нуля. Если команды разделены точкой с запятой, то вторая команда будет выполнена после завершения первой, независимо от результата выполнения первой команды. Оболочка содержит несколько встроенных команд для работы с процессами: wait [pid] Ожидает завершения процесса с указаным идентификатором. Если идентификатор опущен, то ожидает завершения всех процессов запущеных оболочкой. exec команда [аргумент]... Указанная команда заменяет оболочку и получает в качестве параметров заданные аргументы. exit [n] Приводит к завершению оболочки с кодом завершения n. Если арумент опущен, то код завершения ноль. trap [действие условие...] Устанавливает обработчик события. Условие либо EXIT, либо имя сигнала без префикса SIG. EXIT соответствует завершению работы оболочки. Если действие равно “-”, то обработчик сбрасывается в значение по умолчанию. Например, после выполнения команды: trap "echo PRESSED" INT оболочка будет выводить слово PRESSED после каждого нажатия клавиш CTRL-C. (Нажатие клавиш CTRL-C приводит к посылке сигнала SIGINT процессам подключенным к терминалу). 6 Практическое задание Освойте работу с командой ps. Попробуйте запускать ее с различными аргументами. Если вывод команды не помещается на экране, используйте команду less. Выведите в файл отчета1 (lab4.txt) следующую информацию о запущенных Вами процессах: pid, ppid, tty, ruid, command. Вывод должен быть отсортирован по номеру процесса. Выведите в файл отчета информацию о процессах запущенных пользователем root. Вывод должен быть отсортирован по номеру процесса. Ключи -c, -v, -j, -u изменяют формат вывода команды. Попробуйте выполнить команду ps с каждым из этих ключей. Результат сохраните в файле отчета. Запустите команду /home/labs/back. Выполните команду ps и найдите в выведенном списке процесс /home/labs/back. Отправьте процессу сигнал SIGTERM. Снова выполните ps. ____________________________________________________________________________________ 1Если дано задание вывести что-либо в файл отчета, то это означает, что сначала надо вывести результат на экран, убедиться в отсутствии ошибок и только после этого повторно выполнить команду, перенаправив её вывод в файл отчета. Лишняя информация в файле отчета наказуема. 6. Запустите команду: /home/labs/looper first & nice /home/labs/looper secnd& Программа looper выполняет 100 000 000 пустых циклов, выводит первый аргумент и номер цикла, после чего все повторяется. При помощи команды ps, запущеной на другом терминале, определите номера процессов looper и уничтожьте их. Создайте в домашнем каталоге именованный канал fifo. Выполните команду cat /home/labs/dao.txt >fifo Теперь с другого терминала выполните команду cat fifo При помощи команд tty, w, uname, uptime выведите в файл отчета (lab3.txt) имя текущего терминала, информацию о пользователях, работающих в системе, название и версию операционной системы, время работы системы. 10. Установите обработчик сигнала SIGINT. Для этого выполните команду: trap "echo иполучен сигнал SIGINT " INT Пошлите несколько раз оболочке сигнал SIGINT. Для этого следует нажать клавиши CTRL-C. 11. Добавьте в начало файла отчета строку с номером лабораторной работы и Вашим именем. Лабораторная работа №5 Настройка оболочки. 1 Файлы инициализации. При запуске в режиме сеансовой оболочки (при входе в систему) bash выполняет команды содержащиеся в файле /etc/profile, а затем ищет в домашнем каталоге пользователя файлы .bash_profile, .bash_login и .profile и выполняет команды содержащиеся в первом из найденных файлов. Если интерпретатор запускается в интерактивном режиме, но не в качестве сеансовой оболочки (например, при запуске xterm), то он выполняет команды содержащиеся в файле .bashrc из домашнего каталога пользователя. Наконец, если интерпретатор запускается не в интерактивном режиме (например, при выполнении сценария), то он, после запуска, выполняет команды содержащиеся в файле, имя которого хранится в переменной BASH_ENV. Указанные файлы могут использоваться для настройки рабочей среды в соответствии с потребностями пользователя. Как правило в этих файлах содержатся присвоения значений переменным, определения алиасов и функций. Там же могут содержаться команды запуска программ. 2 Переменные используемые оболочкой 2.1 Переменные настройки локализации Для определения языковых настроек используются следующие переменные окружения: LANG определяет значение по умолчанию. Имеет самый низкий приоритет. LC_ALL если эта переменная определена, то ее значение перекрывает значения всех остальных переменных локализации. LC_COLLATE значение этой переменной определяет порядок сортировки символов. LC_CTYPE значение этой переменной указывает на используемые классы символов. LC_MESSAGES значение переменной определяет язык, на котором программы должны выводить сообщения. LC_NUMERIC определяет формат вывода чисел. Этим переменным присваиваются значения вида: язык_СТРАНА.КОДОВАЯСТРАНИЦА или значение C для локали POSIX. Например, для использования русского языка следует присвоить переменной LANG значение ru_RU.KOI8-R. Задание 1: Сравните вывод команд date и LANG=C date 2.2 Переменные используемые оболочкой и некоторыми программами Следующие переменные влияют на работу оболочки и некоторых других программ: PATH определяет путь поиска испольняемых файлов. HOME домашний каталог пользователя. CDPATH путь поиска для команды cd. PROMPT_COMMAND перед выводом приглашения, интерпретатор выполняет команду, содержащуюся в данной переменной. PS1 значение этой переменной определяет вид приглашения командной строки. В данной переменной могут использоваться следующие специальные символы, предваренные обратной косой чертой: a звуковой сигнал. d текущая дата. e escape символ. h короткое имя хоста. H длинное имя хоста. l имя терминала. n символ новой строки. t текущее время в 24-часовом формате. T текущее время в 12-часовом формате. u имя пользователя. w полный текущий рабочий каталог. W короткое имя текущего каталога. $ символ доллара если UID отличен от нуля и символ “#” если равен нулю. Пример: PS1="\d \T\n\u \$ " Задание 2: Измените приглашение командной строки так, чтобы в нем выводилось время, имя пользователя и текущий рабочий каталог. Заканчиваться приглашение должно символом доллара. Сохраните команду определяющую приглашение в файле .bashrc, чтобы приглашение восстанавливалось при каждом запуске оболочки. TMOUT если значение данной переменной больше нуля, то оно определяет время, в секундах, в течение которого оболочка ожидает ввода пользователя. EDITOR многие программы используют значение данной переменной для определения предпочитаемого пользователем текстового редактора. PAGER значение этой переменной используется, например, справочной системой man для определения программы просмотра справочных страниц. 2.3 Переменные устанавливаемые оболочкой Следующие переменные устанавливаются самой оболочкой. Присваивать им значения в файлах инициализации не имеет смысла. PPID номер родительского процесса оболочки. PWD текущий рабочий каталог. OLDPWD каталог, который был рабочим до текущего. UID идентификатор пользователя, запустившего оболочку. RANDOM при извлечении значения данной переменной возвращается случайное число от 0 до 32767. LINENO номер текущей строки сценария. HOSTNAME имя хоста. Задание 3: Просмотрите значения переменых PPID, PWD, OLDPWD, UID, RANDOM и HOSTNAME и сохраните их в файле отчёта (lab5.txt) в формате “имя_переменной=значение”. 3 Псевдонимы команд Bash позволяет определять псевдонимы для наиболее часто используемых команд. Например, если Вы часто используете команду netstat -ran -f inet, то, чтобы не набирать ее каждый раз, Вы можете определить для этой команды псевдоним nsr и использовать его вместо команды. Для определения такого псевдонима используется команда: alias nsr=’netstat -ran -f inet’ Псевдоним действует до завершения процесса оболочки. Если Вы хотите использовать псевдоним постоянно, то следует записать команду, определяющую псевдоним, в файл .bashrc. Команда alias выполненная без параметров, выводит список определенных псевдонимов. Если в качестве параметра задано только имя, то выводится определение указанного псевдонима. Если команда выполнена в виде: alias имя=команда то создаётся новый (или переопределяется существующий) псевдоним. Первое слово команды может, в свою очередь, также являться псевдонимом, однако если оно совпадает с именем исходного псевдонима, то оболочка не будет его преобразовывать. Например, можно определить псевдоним ls для команды ls -F, и оболочка не будет раскрывать его рекурсивно. Для удаления псевдонима используется команда unalias. Псевдонимы можно использовать только в интерактивном режиме.
4 Функции Функции определяются следующим образом: [ function ] имя() { список; } Данная конструкция определяет функцию с указанным именем. Список команд, заключённый в фигурные скобки, является телом функции. Этот список выполняется каждый раз при вызове функции. Выполнение функции осуществляется в том же процессе, что и её вызов, т.е. все изменения окружения процесса остаются в силе после выхода из функции. Вызов функции осуществляется по её имени так же, как и запуск любой команды. Функции могут передаваться аргументы. Во время выполнения функции аргументы заменяют позиционные параметры ($1, $2, ...), после выхода из функции позиционные параметры восстанавливаются. Команда return завершает выполнение функции и осуществляет переход к команде следующей за вызовом функции. Функции могут быть рекурсивными. Пример функции: func1() { mkdir $1; touch $1/$2; } Выполните вызов данной функции следующим образом: func1 dir1 file1 Задание 5: Определите функцию lab, которая будет выводить строку "Лабораторная работа N", где N передаётся функции в качестве аргумента, а затем строку содержащую Ваши имя и фамилию. Сохраните определение функции в файле .bashrc. Добавьте результат работы функции в файл отчета. Лабораторная работа № 6 Работа с файловыми системами. 1 Монтирование и демонтирование файловых систем В UNIX все файловые системы (на различных жестких дисках, дискетах, приводах CD-ROM, импортируемые из сети) объединяются в единую иерархическую структуру. Одна из файловых систем является корневой, к её каталогам монтируются другие файловые системы и т.д. После монтирования файловой системы к некоторому каталогу, при обращении к этому каталогу осуществляется доступ к корневому каталогу подмонтированной файловой системы. При этом становится невозможно получить содержимое каталога к которому подмонтирована файловая система. Каталог, к которому подмонтирована некоторая файловая система, называется точкой монтирования данной файловой системы. Для монтирования файловых систем и вывода списка смонтированных файловых систем служит команда mount. В различных операционных системах эта команда может иметь различный синтаксис. В ОС FreeBSD команда используется следующим образом: mount [-dpruvw] [-o параметры] [-t тип ] [устройство точка_монтирования ] Значения параметров следующие: -d выполнить все действия, за исключением собственно монтирования. -p вывести информацию в формате файла fstab. -r смонтировать файловую систему только для чтения. -w смонтировать файловую систему для чтения и записи. -u изменить состояние уже смонтированной файловой системы. -v вывести подробную информацию. -o за этим ключом следует список параметров, разделенных запятыми. Допустимы следующие параметры: nodev не использовать файлы устройств. noexec запретить запуск программ с файловой системы. nosuid запретить использование бита suid для файловой системы. rdonly то же, что и -r union объединить пространство имён файловой системы и каталога, являющегося точкой монтирования. -t позволяет указать тип монтируемой файловой системы. Возможны следующие типы: ufs файловая система UFS. Используется по умолчанию. ext2fs файловая система ОС Linux. msdos FAT. ntfs NTFS. cd9660 файловая система используемая в CD-ROM. nfs сетевая файловая система NFS. Параметр устройство обозначает файл устройства, на котором находится файловая система. В системе FreeBSD жестким дискам IDE соответствуют файлы устройств /dev/ad?s?, дискетам — /dev/fd?. Например, первый раздел первого диска IDE — /dev/ad0s1, первый дисковод гибких дисков — /dev/fd0. Задание 1: Просмотрите список смонтированных файловых систем. Создайте в домашнем каталоге каталог floppy. Скопируйте в этот каталог файл /home/labs/text.txt. Просмотрите содержимое каталога floppy. Вставьте в дисковод отформатированную дискету. Подмонтируй-те дискету к каталогу floppy. Просмотрите содержимое каталога floppy. Выведите в файл отчета список смонтированных файловых систем. Для того, чтобы отключить используемую файловую систему, применяется команда umount. В качестве аргумента, команде umount передаётся точка монтирования (т.е. каталог, к которому подмонтирована файловая система). Если не размонтировать файловую систему, перед её отключением, то возможна потеря информации. Задание 2: Размонтируйте дискету. Просмотрите содержимое каталога floppy и список смонтированных файловых систем. 2 Создание новой файловой системы Для того, чтобы использовать диск, необходимо создать на нём файловую систему, т.е. отформатировать его. Для этой цели используется команда newfs. Данная команда создаёт на диске файловую систему UFS. Как правило достаточно указать имя файла устройства в качестве параметра данной команды, но возможно, также, указывать различные параметры файловой системы. Для создания файловой системы FAT можно использовать команду newfs_msdos: newfs_msdos [-F FAT][-L метка][-c разм-класт][-f формат] устройство Параметры имеют следующее значение: -F определяет тип FAT (12, 16, 32). -L задаёт метку диска. -c определяет размер кластера в секторах. -f определяет формат гибкого диска. Возможные значения: 360, 720, 1200, 1440, 2880. Для низкоуровнего форматирования гибких дисков используется команда fdformat. Как правило, в качестве параметра достаточно указать имя файла устройства. |