- •Министерство образования и науки Украины
- •Практическое занятие №1
- •1.1. Сокращенная запись двоичных чисел в восьмеричной и шестнадцатеричной системах счисления
- •1.2. Преобразование восьмеричных и шестнадцатеричных чисел в двоичные
- •1.3. Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичные
- •1.4. Преобразование десятичных чисел в двоичные, восьмеричные и шестнадцатеричные
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №2
- •1.1. Вход в систему
- •1.2. Редактирование командной строки
- •1.3. Память командных строк
- •1.4. Переключение виртуальных консолей
- •1.5. Изменение консольных шрифтов
- •1.6. Основные команды
- •Выполнение некоторых команд
- •2. Команда просмотра содержимого каталогов -ls (LiSt) – выдает на экран перечень файлов и каталогов (по умолчанию из текущего каталога).
- •Жесткая ссылка обозначает ся так же, как файл, на который она ссылается, счетчик ссылок при этом будет иметь значение больше 1.
- •3. Команда создание новых каталогов - mkdir.
- •5. Команда копирование файлов -cp (CoPy).
- •6. Команда перемещение файлов - mv (MoVe).
- •7. Команда удаление файлов - rm (ReMove).
- •8. Команды просмотра содержимого файлов more и cat.
- •Подстановочные символы
- •1.7. Выход из системы
- •2. Упражнения
- •Используя справочную информацию из п.1.6 Основные команды, изучите работу рассмотренных команд с различными параметрами и опциями:
- •1.2. Перенаправление ввода и вывода
- •1.3. Перенаправление с добавлением
- •1.4. Использование конвейера
- •2. Упражнения
- •3. Содержание отчёта
- •Справочная информация
- •Практическое занятие №4 Псевдонимы команд в ос qnx Цель – создание псевдонимов команд для облегчения работы в среде ос qnx
- •1. Краткие теоретические сведения
- •1.1. Управление связями файлов
- •1.2. Жесткие связи
- •1.3. Символические связи
- •1.4. Права доступа к файлам
- •1.5. Зависимости
- •1.6. Изменение прав доступа
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Сравнение файлов (команда diff)
- •1.3. Подсчет числа слов, строк и байт в файле (команда wc)
- •1.4. Потоковый редактор sed
- •2. Упражнения
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •/Usr/xpg4/bin/grep
- •Операнды
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •Использование
- •Работа с большими файлами
- •/Usr/bin/who
- •/Usr/xpg4/bin/who
- •Операнды
- •1.1. Ввод текста
- •1.2. Редактирование текста
- •1.3. Сохранение файлов и выход из VI
- •1.4. Редактирование еще одного файла
- •1.5. Включение других файлов
- •1.6. Выполнение команд Shell
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №7 Работа с текстовыми файлами Цель – знакомство с командами, работающими с текстовыми файлами (awk-интерпретатор скриптовый)
- •1. Краткие теоретические сведения
- •1.1. Язык awk
- •1.2. Регулярные выражения
- •Метасимволы, используемые в регулярных выражениях
- •1.3. Действия
- •1.4. Awk-переменные и выражения
- •1.5. Использование операций
- •1.6. Использование массивов
- •1.7. Селекторы
- •1.8. Использование операторов
- •1.9. Ввод и вывод данных
- •1.10. Встроенные функции
- •2. Упражнения
- •Структура файла query1
- •Структура файла query2
- •3. Содержание отчёта
- •1.2. Граматика языка shell
- •2. Упражнения
- •3. Содержание отчёта
- •Выполнить:
- •2. Упражнения
- •Примечание:
- •3. Содержание отчёта
- •1.1. Компоновка объектных модулей
- •1.2. Отладка
- •2. Упражнения
- •Задание №1
- •Задание №2
- •Задание №3
- •Задание №4
- •Задание №5
- •Задание №6
- •Задание №13
- •Задание №14
- •Задание №15
- •Задание №16
- •Задание №17
- •Практическое занятие №11
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Создание каталога
- •1.3. Биты режима для прав доступа
- •1.4. Удаление каталога
- •1.5. Создание жесткой связи
- •1.6. Создание символической связи
- •1.7. Чтение символической связи
- •1.8. Переименование файла
- •1.9. Удаление файла
- •1.10. Обработка ошибок
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Проверка возможностей управления работой и процессами в shell
- •2. Упражнения
- •3. Содержание отчёта
- •1.3. Ошибки, связанные с именами файлов
- •1.4. Доступ к файлу
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №15 Организация процессов вQnx
- •1. Методические указания по выполнению практической работы
- •1.1. Файл main.O
- •1.2. Файл input.C
- •1.3. Файл output.C
- •1.4. Файл process.C
- •1.5. Используемые функции
- •1.6. Получение информации о процессах
- •2. Упражнения
- •1.2. Клиент
- •1.3. Определение идентификаторов узла, процесса и канала (nd/pid/chid) нужного сервера
- •1.4. Применение обмена сообщениями
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №17 Организация потоков в qnx
- •1. Краткие теоретические сведения
- •1.1. Запуск потока
- •1.2. Администрирование атрибутов потока
- •Текст программы
- •Результаты
- •1.2. Текст программы
- •1.3. Последовательность действий
- •1.4. Результаты
- •2. Упражнения
- •3. Содержание отчёта
1.2. Проверка возможностей управления работой и процессами в shell
Начнем с простого примера. Команда yes команда, которая посылает бесконечный поток “y” на стандартное устройство вывода. Выполните команду yes.
/home/student$ yes
y
y
y
Вы можете закончить процесс, нажав клавиши прерывания Ctrl-C. Перенаправив поток бесконечных “y” в /dev/null (это так называемое нуль – устройство, которое выступает в качестве "черной дыры" для данных) командой:
/home/student$ yes > /dev/null
мы увидим, что на экран ничего не выводит, но и подсказка shell не появляется. Это потому, что программа продолжает работать, посылая “y” в /dev/null. Нажмите клавиши прерывания, чтобы прекратить это.
Так как мы хотим, чтобы команда yes продолжала работать, но также хотим получить назад подсказку shell, чтобы выполнять другие работы. Мы можем перевести команду yes в фоновый режим, который разрешит ей выполняться без взаимодействия с пользователем. Чтобы переместить процесс в фоновый режим, необходимо после команды ввести символ “&”.
/home/student$ yes > /dev/null &
[1] 164
/home/student$
Оболочка, готовая к приему новых команд. [1] - номер работы для программы yes. Shell приписывает номер каждой выполняемой работе. Поскольку “yes”( одна единая работа, которая в данный момент выполняется, ей присвоенный номер 1. 164 - идентификатор процесса (PID). Этот номер, присвоенный системой процессу. Любой из этих номеров можно использовать при обращении к работе, так как эти номера уникальные.
Теперь мы имеем выполняемый процесс yes в фоновом режиме, который непрерывно посылает поток “y” в /dev/null. Чтобы проверить состояние этого процесса, используйте внутреннюю команду shell jobs.
/home/student$ jobs
[1]+ Running yes >/dev/null &
/home/student$
Можете также воспользоваться командой ps, для проверки статуса работ.
Существует большая разность между фоновой работой и остановленной. Работа в фоновом режиме и выполняется, и занимает память. Она может даже выводить что-то на экран, когда вы работаете над чем-то другим.
Для завершения работы используйте команду kill. Эта команда может использовать в качестве аргумента как идентификатор процесса (см. выше), так и номер работы оба варианта использования эквивалентны.
Это была работа номер 1, так, что, используя команду
/home/student$ kill %1
мы ликвидируем работу. При идентификации работы по номеру необходимо впереди ставить символ процента (%).
Теперь, после уничтожения процесса, снова воспользуемся командой jobs:
/home/student$ jobs
[1]+ Terminated yes >/dev/null
/home/student$
Есть другой способ перевести роботу в фоновый режим. Вы можете начать в режиме переднего плана, прекратить работу и продолжить ее в фоновом режиме.
Выполните команду yes > /dev/null
/home/student$ yes > /dev/null
Поскольку снова работа выполняется на переднем плане, вы не получите назад на экран подсказку shell.
Теперь, вместо того, чтобы перерывать работу (с помощью Ctrl-C), мы её прекратим не уничтожая. Для этого нажмем соответствующие клавиши- Ctrl-Z.
/home/student$ yes > /dev/null
[ctrl-Z]
[1]+ Stopped yes >/dev/null
/home/student$
Пока работа остановлена, она просто не выполняется. На нее не тратится время процессора. Но вы всегда можете восстановить работу, и она продолжится, как ни в чем не бывало. Изменение состояния процесса обнаруживается оболочкой немедленно. Обычно оболочка информирует пользователя о том, что задание блокировано и не может продолжать работу. Для того чтобы не помешать работе интерактивного задания, соответствующее сообщение показывается оболочкой перед выводом командной строки.
Для возобновления работы в режиме переднего плана используйте команду fg (“foreground” передний план).
/home/student$ fg
yes >/dev/null
Shell снова выдаст на экран имени команды, чтобы вы могли проконтролировать, какую работу вы активизировали в режиме переднего плана. Снова прекратите работу с помощью Ctrl-Z. В этот раз используйте команду bg (“background” задний план, фоновый режим), чтобы перевести роботу в фоновый режим. Эффект будет аналогичный тому, как если бы вы набрали после команды “&”.
/home/student$ bg
[1]+ yes >/dev/null &
/home/student$
Команда jobs сообщит, что команда yes действительно выполняется, и мы можем снова ее уничтожить с помощью команды kill, как мы это уже делали.
Как теперь прекратить работу? Использование Ctrl-Z не поможет, поскольку работа находится в фоновом режиме. Ответ переместить работу на передний план, а потом остановить.
Команды fg и bg переводят на передний план или в фоновый режим работы, которые были остановлены последними (это определяется символом “+” после номера работы, это когда вы используете команду jobs). Если вы выполняете много работ одновременно, вы можете перевести на передний план или, наоборот, в фоновый режим конкретную работу задачам идентификатора работы, как аргумента команд fg или bg.
/home/student$ fg %2
(перевод на передний план работы номер 2) или
/home/student$ bg %3
(перевод в фон работы номер 3).
Для этих команд нельзя использовать идентификаторы процессов.
/home/student$ %2
эквивалентно
/home/student$ fg %2
Команды fg, bg и jobs внутренние команды shell. Если по какой-то причине вы используете shell, который не поддерживает управления роботами, там вы не найдете этих команд.
При попытке выхода из оболочки, в которой запущены фоновые задания, с помощью команды exit или клавиши Ctrl-D система показывает предупреждающее сообщение: “Есть остановленные (работающие) задания”. Для просмотра списка этих заданий введите команду jobs. При немедленной повторной попытке выхода оболочка завершит все приостановленные и работающие задания без предупреждения.