Файл: Лабораторная работа Поиск файлов. Перенаправление вводавывода. Просмотр запущенных процессов Цель работы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 27
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лабораторная работа № 5. Поиск файлов. Перенаправление
ввода-вывода. Просмотр запущенных процессов
5.1.Цель работы
Ознакомление с инструментами поиска файлов и фильтрации текстовых данных. Приобретение практических навыков: по управлению процессами (и заданиями), по проверке использования диска и обслуживанию файловых систем.
5.2.Указания к работе
5.2.1.Перенаправление ввода-вывода
В системе по умолчанию открыто три специальных потока:
–
stdin — стандартный поток ввода (по умолчанию: клавиатура), файловый дескриптор 0;
–
stdout — стандартный поток вывода (по умолчанию: консоль), файловый дескриптор 1;
–
stderr — стандартный поток вывод сообщений об ошибках (по умолчанию: консоль), файловый дескриптор 2.
Большинство используемых в консоли команд и программ записывают результаты своей работы в стандартный поток вывода stdout. Например, команда ls выводит в стандартный поток вывода (консоль) список файлов в текущей директории. Потоки вывода и ввода можно перенаправлять на другие файлы или устройства. Проще всего это делается с помощью символов >, >>, <, <<.
Рассмотрим пример.
# Перенаправление stdout (вывода) в файл. # Если файл отсутствовал, то он
создаётся, # иначе -- перезаписывается.
# Создаёт файл, содержащий список дерева каталогов.
ls -lR > dir-tree.list
1>filename
# Перенаправление вывода (stdout) в файл "filename".
1>>filename
# Перенаправление вывода (stdout) в файл "filename", # файл открывается в
режиме добавления.
2>filename
# Перенаправление stderr в файл "filename".
2>>filename
# Перенаправление stderr в файл "filename", # файл открывается в режиме
добавления.
&>filename
# Перенаправление stdout и stderr в файл "filename".
5.2.2. Конвейер
Конвейер (pipe) служит для объединения простых команд или утилит в цепочки, в которых результат работы предыдущей команды передаётся последующей. Синтаксис следующий: команда 1 | команда 2
# означает, что вывод команды 1 передастся на ввод команде 2
Конвейеры можно группировать в цепочки и выводить с помощью перенаправления в файл, например: ls -la |sort > sortilg_list вывод команды ls -la передаётся команде сортировки sort\verb, которая пишет результат в файл sorting_list\verb.
Чаще всего скрипты на Bash используются в качестве автоматизации каких-то рутинных операций в консоли, отсюда иногда возникает необходимость в обработке stdout одной команды и передача на stdin другой команде, при этом результат выполнения команды должен обработан.
5.2.3. Поиск файла
Команда find используется для поиска и отображения на экран имён файлов, соответствующих заданной строке символов.
Формат команды: find путь [-опции]
Путь определяет каталог, начиная с которого по всем подкаталогам будет вестись поиск.
Примеры:
1.
Вывести на экран имена файлов из вашего домашнего каталога и его подкаталогов, начинающихся на f: find -name "f*" -print
Здесь — обозначение вашего домашнего каталога, -name — после этой опции указывается имя файла, который нужно найти, "f*" — строка символов, определяющая имя файла, -print — опция, задающая вывод результатов поиска на экран.
2.
Вывести на экран имена файлов в каталоге /etc, начинающихся с символа p: find /etc -name "p*" -print
3.
Найти в Вашем домашнем каталоге файлы, имена которых заканчиваются символом и удалить их: find -name "*" -exec rm "{}" \;
Здесь опция -exec rm "{}" \; задаёт применение команды rm ко всем файлам, имена которых соответствуют указанной после опции -name строке символов. Для просмотра опций команды find воспользуйтесь командой man.
5.2.4.Фильтрация текста
Найти в текстовом файле указанную строку символов позволяет команда grep.
Формат команды: grep строка имя_файла
Кроме того, команда grep способна обрабатывать стандартный вывод других команд (любой текст). Для этого следует использовать конвейер, связав вывод команды с вводом grep.
Примеры:
1.
Показать строки во всех файлах в вашем домашнем каталоге с именами, начинающимися на f, в которых есть слово begin: grep begin f*
2.
Найти в текущем каталоге все файлы, содержащих в имени «лаб»: ls -l | grep лаб
5.2.5.Проверка использования диска
Команда df показывает размер каждого смонтированного раздела диска.
Формат команды: df [-опции] [файловая_система]
Пример: df -vi
Команда du показывает число килобайт, используемое каждым файлом или каталогом.
Формат команды: du [-опции] [имя_файла...]
Пример. du -a /
На afs можно посмотреть использованное пространство командой fs quota
5.2.6.Управление задачами
Любую выполняющуюся в консоли команду или внешнюю программу можно запустить в фоновом режиме. Для этого следует в конце имени команды указать знак амперсанда &.
Например: gedit &
Будет запущен текстовой редактор gedit в фоновом режиме. Консоль при этом не будет заблокирована.
Запущенные фоном программы называются задачами (jobs). Ими можно управлять с помощью команды jobs, которая выводит список запущенных в данный момент задач. Для завершения задачи необходимо выполнить команду kill %номер задачи
5.2.7.Управление процессами
Любой команде, выполняемой в системе, присваивается идентификатор
процесса (process ID). Получить информацию о процессе и управлять им, пользуясь идентификатором процесса, можно из любого окна командного интерпретатора.
5.2.8.Получение информации о процессах
Команда ps используется для получения информации о процессах. Формат команды: ps [-опции]
Для получения информации о процессах, управляемых вами и запущенных
(работающих или остановленных) на вашем терминале, используйте опцию aux.
Пример: ps aux
Для запуска команды в фоновом режиме необходимо в конце командной строки указать знак & (амперсанд).
Пример работы, требующей много машинного времени для выполнения, и которую целесообразно запустить в фоновом режиме: find /var/log -name "*.log" -print
> l.log &
5.3.Последовательность выполнения работы
1.
Осуществите вход в систему, используя соответствующее имя пользователя.
2.
Запишите в файл file.txt названия файлов, содержащихся в каталоге /etc.
Допишите в этот же файл названия файлов, содержащихся в вашем домашнем каталоге.
3.
Выведите имена всех файлов из file.txt, имеющих расширение .conf, после чего запишите их в новый текстовой файл conf.txt.
4.
Определите, какие файлы в вашем домашнем каталоге имеют имена, начинавшиеся с символа c? Предложите несколько вариантов, как это сделать.
5.
Выведите на экран (постранично) имена файлов из каталога /etc, начинающиеся с символа h.
6.
Запустите в фоновом режиме процесс, который будет записывать в файл
/logfile файлы, имена которых начинаются с log.
7.
Удалите файл /logfile.
8.
Запустите из консоли в фоновом режиме редактор gedit.
9.
Определите идентификатор процесса gedit, используя команду ps, конвейер и фильтр grep. Как ещё можно определить идентификатор процесса?
10.
Прочтите справку (man) команды kill, после чего используйте её для завершения процесса gedit.
11.
Выполните команды df и du, предварительно получив более подробную информацию об этих командах, с помощью команды man.
12.
Воспользовавшись справкой команды find, выведите имена всех директорий, имеющихся в вашем домашнем каталоге.
5.4.Содержание отчёта
1.
Титульный лист с указанием номера лабораторной работы и ФИО студента.
2.
Формулировка цели работы.
3.
Описание результатов выполнения задания:
– скриншоты (снимки экрана), фиксирующие выполнение лаб. раб.; – листинги
(исходный код) программ (если они есть); – результаты выполнения программ.
4.
Выводы, согласованные с целью работы.
5.
Ответы на контрольные вопросы.
5.5.Контрольные вопросы
1.
Какие потоки ввода вывода вы знаете?
2.
Объясните разницу между операцией > и >>.
3.
Что такое конвейер?
4.
Что такое процесс? Чем это понятие отличается от программы?
5.
Что такое PID и GID?
6.
Что такое задачи и какая команда позволяет ими управлять?
7.
Найдите информацию об утилитах top и htop. Каковы их функции?
8.
Назовите и дайте характеристику команде поиска файлов. Приведите примеры использования этой команды.
9.
Можно ли по контексту (содержанию) найти файл? Если да, то как?
10.
Как определить объем свободной памяти на жёстком диске?
11.
Как определить объем вашего домашнего каталога?
12.
Как удалить зависший процесс?
Лабораторная работа № 5. Поиск файлов. Перенаправление
ввода-вывода. Просмотр запущенных процессов
5.1.Цель работы
Ознакомление с инструментами поиска файлов и фильтрации текстовых данных. Приобретение практических навыков: по управлению процессами (и заданиями), по проверке использования диска и обслуживанию файловых систем.
5.2.Указания к работе
5.2.1.Перенаправление ввода-вывода
В системе по умолчанию открыто три специальных потока:
–
stdin — стандартный поток ввода (по умолчанию: клавиатура), файловый дескриптор 0;
–
stdout — стандартный поток вывода (по умолчанию: консоль), файловый дескриптор 1;
–
stderr — стандартный поток вывод сообщений об ошибках (по умолчанию: консоль), файловый дескриптор 2.
Большинство используемых в консоли команд и программ записывают результаты своей работы в стандартный поток вывода stdout. Например, команда ls выводит в стандартный поток вывода (консоль) список файлов в текущей директории. Потоки вывода и ввода можно перенаправлять на другие файлы или устройства. Проще всего это делается с помощью символов >, >>, <, <<.
Рассмотрим пример.
# Перенаправление stdout (вывода) в файл. # Если файл отсутствовал, то он
создаётся, # иначе -- перезаписывается.
# Создаёт файл, содержащий список дерева каталогов.
ls -lR > dir-tree.list
1>filename
# Перенаправление вывода (stdout) в файл "filename".
1>>filename
# Перенаправление вывода (stdout) в файл "filename", # файл открывается в
режиме добавления.
2>filename
# Перенаправление stderr в файл "filename".
2>>filename
# Перенаправление stderr в файл "filename", # файл открывается в режиме
добавления.
&>filename
# Перенаправление stdout и stderr в файл "filename".
5.2.2. Конвейер
Конвейер (pipe) служит для объединения простых команд или утилит в цепочки, в которых результат работы предыдущей команды передаётся последующей. Синтаксис следующий: команда 1 | команда 2
# означает, что вывод команды 1 передастся на ввод команде 2
Конвейеры можно группировать в цепочки и выводить с помощью перенаправления в файл, например: ls -la |sort > sortilg_list вывод команды ls -la передаётся команде сортировки sort\verb, которая пишет результат в файл sorting_list\verb.
Чаще всего скрипты на Bash используются в качестве автоматизации каких-то рутинных операций в консоли, отсюда иногда возникает необходимость в обработке stdout одной команды и передача на stdin другой команде, при этом результат выполнения команды должен обработан.
5.2.3. Поиск файла
Команда find используется для поиска и отображения на экран имён файлов, соответствующих заданной строке символов.
Формат команды: find путь [-опции]
Путь определяет каталог, начиная с которого по всем подкаталогам будет вестись поиск.
Примеры:
1.
Вывести на экран имена файлов из вашего домашнего каталога и его подкаталогов, начинающихся на f: find -name "f*" -print
Здесь — обозначение вашего домашнего каталога, -name — после этой опции указывается имя файла, который нужно найти, "f*" — строка символов, определяющая имя файла, -print — опция, задающая вывод результатов поиска на экран.
2.
Вывести на экран имена файлов в каталоге /etc, начинающихся с символа p: find /etc -name "p*" -print
3.
Найти в Вашем домашнем каталоге файлы, имена которых заканчиваются символом и удалить их: find -name "*" -exec rm "{}" \;
Здесь опция -exec rm "{}" \; задаёт применение команды rm ко всем файлам, имена которых соответствуют указанной после опции -name строке символов. Для просмотра опций команды find воспользуйтесь командой man.
5.2.4.Фильтрация текста
Найти в текстовом файле указанную строку символов позволяет команда grep.
Формат команды: grep строка имя_файла
Кроме того, команда grep способна обрабатывать стандартный вывод других команд (любой текст). Для этого следует использовать конвейер, связав вывод команды с вводом grep.
Примеры:
1.
Показать строки во всех файлах в вашем домашнем каталоге с именами, начинающимися на f, в которых есть слово begin: grep begin f*
2.
Найти в текущем каталоге все файлы, содержащих в имени «лаб»: ls -l | grep лаб
5.2.5.Проверка использования диска
Команда df показывает размер каждого смонтированного раздела диска.
Формат команды: df [-опции] [файловая_система]
Пример: df -vi
Команда du показывает число килобайт, используемое каждым файлом или каталогом.
Формат команды: du [-опции] [имя_файла...]
Пример. du -a /
На afs можно посмотреть использованное пространство командой fs quota
5.2.6.Управление задачами
Любую выполняющуюся в консоли команду или внешнюю программу можно запустить в фоновом режиме. Для этого следует в конце имени команды указать знак амперсанда &.
Например: gedit &
Будет запущен текстовой редактор gedit в фоновом режиме. Консоль при этом не будет заблокирована.
Запущенные фоном программы называются задачами (jobs). Ими можно управлять с помощью команды jobs, которая выводит список запущенных в данный момент задач. Для завершения задачи необходимо выполнить команду kill %номер задачи
5.2.7.Управление процессами
Любой команде, выполняемой в системе, присваивается идентификатор
процесса (process ID). Получить информацию о процессе и управлять им, пользуясь идентификатором процесса, можно из любого окна командного интерпретатора.
5.2.8.Получение информации о процессах
Команда ps используется для получения информации о процессах. Формат команды: ps [-опции]
Для получения информации о процессах, управляемых вами и запущенных
(работающих или остановленных) на вашем терминале, используйте опцию aux.
Пример: ps aux
Для запуска команды в фоновом режиме необходимо в конце командной строки указать знак & (амперсанд).
Пример работы, требующей много машинного времени для выполнения, и которую целесообразно запустить в фоновом режиме: find /var/log -name "*.log" -print
> l.log &
5.3.Последовательность выполнения работы
1.
Осуществите вход в систему, используя соответствующее имя пользователя.
2.
Запишите в файл file.txt названия файлов, содержащихся в каталоге /etc.
Допишите в этот же файл названия файлов, содержащихся в вашем домашнем каталоге.
3.
Выведите имена всех файлов из file.txt, имеющих расширение .conf, после чего запишите их в новый текстовой файл conf.txt.
4.
Определите, какие файлы в вашем домашнем каталоге имеют имена, начинавшиеся с символа c? Предложите несколько вариантов, как это сделать.
5.
Выведите на экран (постранично) имена файлов из каталога /etc, начинающиеся с символа h.
6.
Запустите в фоновом режиме процесс, который будет записывать в файл
/logfile файлы, имена которых начинаются с log.
7.
Удалите файл /logfile.
8.
Запустите из консоли в фоновом режиме редактор gedit.
9.
Определите идентификатор процесса gedit, используя команду ps, конвейер и фильтр grep. Как ещё можно определить идентификатор процесса?
10.
Прочтите справку (man) команды kill, после чего используйте её для завершения процесса gedit.
11.
Выполните команды df и du, предварительно получив более подробную информацию об этих командах, с помощью команды man.
12.
Воспользовавшись справкой команды find, выведите имена всех директорий, имеющихся в вашем домашнем каталоге.
5.4.Содержание отчёта
1.
Титульный лист с указанием номера лабораторной работы и ФИО студента.
2.
Формулировка цели работы.
3.
Описание результатов выполнения задания:
– скриншоты (снимки экрана), фиксирующие выполнение лаб. раб.; – листинги
(исходный код) программ (если они есть); – результаты выполнения программ.
4.
Выводы, согласованные с целью работы.
5.
Ответы на контрольные вопросы.
5.5.Контрольные вопросы
1.
Какие потоки ввода вывода вы знаете?
2.
Объясните разницу между операцией > и >>.
3.
Что такое конвейер?
4.
Что такое процесс? Чем это понятие отличается от программы?
5.
Что такое PID и GID?
6.
Что такое задачи и какая команда позволяет ими управлять?
7.
Найдите информацию об утилитах top и htop. Каковы их функции?
8.
Назовите и дайте характеристику команде поиска файлов. Приведите примеры использования этой команды.
9.
Можно ли по контексту (содержанию) найти файл? Если да, то как?
10.
Как определить объем свободной памяти на жёстком диске?
11.
Как определить объем вашего домашнего каталога?
12.
Как удалить зависший процесс?
Лабораторная работа № 5. Поиск файлов. Перенаправление
ввода-вывода. Просмотр запущенных процессов
5.1.Цель работы
Ознакомление с инструментами поиска файлов и фильтрации текстовых данных. Приобретение практических навыков: по управлению процессами (и заданиями), по проверке использования диска и обслуживанию файловых систем.
5.2.Указания к работе
5.2.1.Перенаправление ввода-вывода
В системе по умолчанию открыто три специальных потока:
–
stdin — стандартный поток ввода (по умолчанию: клавиатура), файловый дескриптор 0;
–
stdout — стандартный поток вывода (по умолчанию: консоль), файловый дескриптор 1;
–
stderr — стандартный поток вывод сообщений об ошибках (по умолчанию: консоль), файловый дескриптор 2.
Большинство используемых в консоли команд и программ записывают результаты своей работы в стандартный поток вывода stdout. Например, команда ls выводит в стандартный поток вывода (консоль) список файлов в текущей директории. Потоки вывода и ввода можно перенаправлять на другие файлы или устройства. Проще всего это делается с помощью символов >, >>, <, <<.
Рассмотрим пример.
# Перенаправление stdout (вывода) в файл. # Если файл отсутствовал, то он
создаётся, # иначе -- перезаписывается.
# Создаёт файл, содержащий список дерева каталогов.
ls -lR > dir-tree.list
1>filename
# Перенаправление вывода (stdout) в файл "filename".
1>>filename
# Перенаправление вывода (stdout) в файл "filename", # файл открывается в
режиме добавления.
2>filename
# Перенаправление stderr в файл "filename".
2>>filename
# Перенаправление stderr в файл "filename", # файл открывается в режиме
добавления.
&>filename
# Перенаправление stdout и stderr в файл "filename".
5.2.2. Конвейер
Конвейер (pipe) служит для объединения простых команд или утилит в цепочки, в которых результат работы предыдущей команды передаётся последующей. Синтаксис следующий: команда 1 | команда 2
# означает, что вывод команды 1 передастся на ввод команде 2
Конвейеры можно группировать в цепочки и выводить с помощью перенаправления в файл, например: ls -la |sort > sortilg_list вывод команды ls -la передаётся команде сортировки sort\verb, которая пишет результат в файл sorting_list\verb.
Чаще всего скрипты на Bash используются в качестве автоматизации каких-то рутинных операций в консоли, отсюда иногда возникает необходимость в обработке stdout одной команды и передача на stdin другой команде, при этом результат выполнения команды должен обработан.
5.2.3. Поиск файла
Команда find используется для поиска и отображения на экран имён файлов, соответствующих заданной строке символов.
Формат команды: find путь [-опции]
Путь определяет каталог, начиная с которого по всем подкаталогам будет вестись поиск.
Примеры:
1.
Вывести на экран имена файлов из вашего домашнего каталога и его подкаталогов, начинающихся на f: find -name "f*" -print
Здесь — обозначение вашего домашнего каталога, -name — после этой опции указывается имя файла, который нужно найти, "f*" — строка символов, определяющая имя файла, -print — опция, задающая вывод результатов поиска на экран.
2.
Вывести на экран имена файлов в каталоге /etc, начинающихся с символа p: find /etc -name "p*" -print
3.
Найти в Вашем домашнем каталоге файлы, имена которых заканчиваются символом и удалить их: find -name "*" -exec rm "{}" \;
Здесь опция -exec rm "{}" \; задаёт применение команды rm ко всем файлам, имена которых соответствуют указанной после опции -name строке символов. Для просмотра опций команды find воспользуйтесь командой man.
5.2.4.Фильтрация текста
Найти в текстовом файле указанную строку символов позволяет команда grep.
Формат команды: grep строка имя_файла
Кроме того, команда grep способна обрабатывать стандартный вывод других команд (любой текст). Для этого следует использовать конвейер, связав вывод команды с вводом grep.
Примеры:
1.
Показать строки во всех файлах в вашем домашнем каталоге с именами, начинающимися на f, в которых есть слово begin: grep begin f*
2.
Найти в текущем каталоге все файлы, содержащих в имени «лаб»: ls -l | grep лаб
5.2.5.Проверка использования диска
Команда df показывает размер каждого смонтированного раздела диска.
Формат команды: df [-опции] [файловая_система]
Пример: df -vi
Команда du показывает число килобайт, используемое каждым файлом или каталогом.
Формат команды: du [-опции] [имя_файла...]
Пример. du -a /
На afs можно посмотреть использованное пространство командой fs quota
5.2.6.Управление задачами
Любую выполняющуюся в консоли команду или внешнюю программу можно запустить в фоновом режиме. Для этого следует в конце имени команды указать знак амперсанда &.
Например: gedit &
Будет запущен текстовой редактор gedit в фоновом режиме. Консоль при этом не будет заблокирована.
Запущенные фоном программы называются задачами (jobs). Ими можно управлять с помощью команды jobs, которая выводит список запущенных в данный момент задач. Для завершения задачи необходимо выполнить команду kill %номер задачи
5.2.7.Управление процессами
Любой команде, выполняемой в системе, присваивается идентификатор
процесса (process ID). Получить информацию о процессе и управлять им, пользуясь идентификатором процесса, можно из любого окна командного интерпретатора.
5.2.8.Получение информации о процессах
Команда ps используется для получения информации о процессах. Формат команды: ps [-опции]
Для получения информации о процессах, управляемых вами и запущенных
(работающих или остановленных) на вашем терминале, используйте опцию aux.
Пример: ps aux
Для запуска команды в фоновом режиме необходимо в конце командной строки указать знак & (амперсанд).
Пример работы, требующей много машинного времени для выполнения, и которую целесообразно запустить в фоновом режиме: find /var/log -name "*.log" -print
> l.log &
5.3.Последовательность выполнения работы
1.
Осуществите вход в систему, используя соответствующее имя пользователя.
2.
Запишите в файл file.txt названия файлов, содержащихся в каталоге /etc.
Допишите в этот же файл названия файлов, содержащихся в вашем домашнем каталоге.
3.
Выведите имена всех файлов из file.txt, имеющих расширение .conf, после чего запишите их в новый текстовой файл conf.txt.
4.
Определите, какие файлы в вашем домашнем каталоге имеют имена, начинавшиеся с символа c? Предложите несколько вариантов, как это сделать.
5.
Выведите на экран (постранично) имена файлов из каталога /etc, начинающиеся с символа h.
6.
Запустите в фоновом режиме процесс, который будет записывать в файл
/logfile файлы, имена которых начинаются с log.
7.
Удалите файл /logfile.
8.
Запустите из консоли в фоновом режиме редактор gedit.
9.
Определите идентификатор процесса gedit, используя команду ps, конвейер и фильтр grep. Как ещё можно определить идентификатор процесса?
10.
Прочтите справку (man) команды kill, после чего используйте её для завершения процесса gedit.
11.
Выполните команды df и du, предварительно получив более подробную информацию об этих командах, с помощью команды man.
12.
Воспользовавшись справкой команды find, выведите имена всех директорий, имеющихся в вашем домашнем каталоге.
5.4.Содержание отчёта
1.
Титульный лист с указанием номера лабораторной работы и ФИО студента.
2.
Формулировка цели работы.
3.
Описание результатов выполнения задания:
– скриншоты (снимки экрана), фиксирующие выполнение лаб. раб.; – листинги
(исходный код) программ (если они есть); – результаты выполнения программ.
4.
Выводы, согласованные с целью работы.
5.
Ответы на контрольные вопросы.
5.5.Контрольные вопросы
1.
Какие потоки ввода вывода вы знаете?
2.
Объясните разницу между операцией > и >>.
3.
Что такое конвейер?
4.
Что такое процесс? Чем это понятие отличается от программы?
5.
Что такое PID и GID?
6.
Что такое задачи и какая команда позволяет ими управлять?
7.
Найдите информацию об утилитах top и htop. Каковы их функции?
8.
Назовите и дайте характеристику команде поиска файлов. Приведите примеры использования этой команды.
9.
Можно ли по контексту (содержанию) найти файл? Если да, то как?
10.
Как определить объем свободной памяти на жёстком диске?
11.
Как определить объем вашего домашнего каталога?
12.
Как удалить зависший процесс?
Лабораторная работа № 5. Поиск файлов. Перенаправление
ввода-вывода. Просмотр запущенных процессов
5.1.Цель работы
Ознакомление с инструментами поиска файлов и фильтрации текстовых данных. Приобретение практических навыков: по управлению процессами (и заданиями), по проверке использования диска и обслуживанию файловых систем.
5.2.Указания к работе
5.2.1.Перенаправление ввода-вывода
В системе по умолчанию открыто три специальных потока:
–
stdin — стандартный поток ввода (по умолчанию: клавиатура), файловый дескриптор 0;
–
stdout — стандартный поток вывода (по умолчанию: консоль), файловый дескриптор 1;
–
stderr — стандартный поток вывод сообщений об ошибках (по умолчанию: консоль), файловый дескриптор 2.
Большинство используемых в консоли команд и программ записывают результаты своей работы в стандартный поток вывода stdout. Например, команда ls выводит в стандартный поток вывода (консоль) список файлов в текущей директории. Потоки вывода и ввода можно перенаправлять на другие файлы или устройства. Проще всего это делается с помощью символов >, >>, <, <<.
Рассмотрим пример.
# Перенаправление stdout (вывода) в файл. # Если файл отсутствовал, то он
создаётся, # иначе -- перезаписывается.
# Создаёт файл, содержащий список дерева каталогов.
ls -lR > dir-tree.list
1>filename
# Перенаправление вывода (stdout) в файл "filename".
1>>filename
# Перенаправление вывода (stdout) в файл "filename", # файл открывается в
режиме добавления.
2>filename
# Перенаправление stderr в файл "filename".
2>>filename
# Перенаправление stderr в файл "filename", # файл открывается в режиме
добавления.
&>filename
# Перенаправление stdout и stderr в файл "filename".
5.2.2. Конвейер
Конвейер (pipe) служит для объединения простых команд или утилит в цепочки, в которых результат работы предыдущей команды передаётся последующей. Синтаксис следующий: команда 1 | команда 2
# означает, что вывод команды 1 передастся на ввод команде 2
Конвейеры можно группировать в цепочки и выводить с помощью перенаправления в файл, например: ls -la |sort > sortilg_list вывод команды ls -la передаётся команде сортировки sort\verb, которая пишет результат в файл sorting_list\verb.
Чаще всего скрипты на Bash используются в качестве автоматизации каких-то рутинных операций в консоли, отсюда иногда возникает необходимость в обработке stdout одной команды и передача на stdin другой команде, при этом результат выполнения команды должен обработан.
5.2.3. Поиск файла
Команда find используется для поиска и отображения на экран имён файлов, соответствующих заданной строке символов.
Формат команды: find путь [-опции]
Путь определяет каталог, начиная с которого по всем подкаталогам будет вестись поиск.
Примеры:
1.
Вывести на экран имена файлов из вашего домашнего каталога и его подкаталогов, начинающихся на f: find -name "f*" -print
Здесь — обозначение вашего домашнего каталога, -name — после этой опции указывается имя файла, который нужно найти, "f*" — строка символов, определяющая имя файла, -print — опция, задающая вывод результатов поиска на экран.
2.
Вывести на экран имена файлов в каталоге /etc, начинающихся с символа p: find /etc -name "p*" -print
3.
Найти в Вашем домашнем каталоге файлы, имена которых заканчиваются символом и удалить их: find -name "*" -exec rm "{}" \;
Здесь опция -exec rm "{}" \; задаёт применение команды rm ко всем файлам, имена которых соответствуют указанной после опции -name строке символов. Для просмотра опций команды find воспользуйтесь командой man.
5.2.4.Фильтрация текста
Найти в текстовом файле указанную строку символов позволяет команда grep.
Формат команды: grep строка имя_файла
Кроме того, команда grep способна обрабатывать стандартный вывод других команд (любой текст). Для этого следует использовать конвейер, связав вывод команды с вводом grep.
Примеры:
1.
Показать строки во всех файлах в вашем домашнем каталоге с именами, начинающимися на f, в которых есть слово begin: grep begin f*
2.
Найти в текущем каталоге все файлы, содержащих в имени «лаб»: ls -l | grep лаб
5.2.5.Проверка использования диска
Команда df показывает размер каждого смонтированного раздела диска.
Формат команды: df [-опции] [файловая_система]
Пример: df -vi
Команда du показывает число килобайт, используемое каждым файлом или каталогом.
Формат команды: du [-опции] [имя_файла...]
Пример. du -a /
На afs можно посмотреть использованное пространство командой fs quota
5.2.6.Управление задачами
Любую выполняющуюся в консоли команду или внешнюю программу можно запустить в фоновом режиме. Для этого следует в конце имени команды указать знак амперсанда &.
Например: gedit &
Будет запущен текстовой редактор gedit в фоновом режиме. Консоль при этом не будет заблокирована.
Запущенные фоном программы называются задачами (jobs). Ими можно управлять с помощью команды jobs, которая выводит список запущенных в данный момент задач. Для завершения задачи необходимо выполнить команду kill %номер задачи
5.2.7.Управление процессами
Любой команде, выполняемой в системе, присваивается идентификатор
процесса (process ID). Получить информацию о процессе и управлять им, пользуясь идентификатором процесса, можно из любого окна командного интерпретатора.
5.2.8.Получение информации о процессах
Команда ps используется для получения информации о процессах. Формат команды: ps [-опции]
Для получения информации о процессах, управляемых вами и запущенных
(работающих или остановленных) на вашем терминале, используйте опцию aux.
Пример: ps aux
Для запуска команды в фоновом режиме необходимо в конце командной строки указать знак & (амперсанд).
Пример работы, требующей много машинного времени для выполнения, и которую целесообразно запустить в фоновом режиме: find /var/log -name "*.log" -print
> l.log &
5.3.Последовательность выполнения работы
1.
Осуществите вход в систему, используя соответствующее имя пользователя.
2.
Запишите в файл file.txt названия файлов, содержащихся в каталоге /etc.
Допишите в этот же файл названия файлов, содержащихся в вашем домашнем каталоге.
3.
Выведите имена всех файлов из file.txt, имеющих расширение .conf, после чего запишите их в новый текстовой файл conf.txt.
4.
Определите, какие файлы в вашем домашнем каталоге имеют имена, начинавшиеся с символа c? Предложите несколько вариантов, как это сделать.
5.
Выведите на экран (постранично) имена файлов из каталога /etc, начинающиеся с символа h.
6.
Запустите в фоновом режиме процесс, который будет записывать в файл
/logfile файлы, имена которых начинаются с log.
7.
Удалите файл /logfile.
8.
Запустите из консоли в фоновом режиме редактор gedit.
9.
Определите идентификатор процесса gedit, используя команду ps, конвейер и фильтр grep. Как ещё можно определить идентификатор процесса?
10.
Прочтите справку (man) команды kill, после чего используйте её для завершения процесса gedit.
11.
Выполните команды df и du, предварительно получив более подробную информацию об этих командах, с помощью команды man.
12.
Воспользовавшись справкой команды find, выведите имена всех директорий, имеющихся в вашем домашнем каталоге.
5.4.Содержание отчёта
1.
Титульный лист с указанием номера лабораторной работы и ФИО студента.
2.
Формулировка цели работы.
3.
Описание результатов выполнения задания:
– скриншоты (снимки экрана), фиксирующие выполнение лаб. раб.; – листинги
(исходный код) программ (если они есть); – результаты выполнения программ.
4.
Выводы, согласованные с целью работы.
5.
Ответы на контрольные вопросы.
5.5.Контрольные вопросы
1.
Какие потоки ввода вывода вы знаете?
2.
Объясните разницу между операцией > и >>.
3.
Что такое конвейер?
4.
Что такое процесс? Чем это понятие отличается от программы?
5.
Что такое PID и GID?
6.
Что такое задачи и какая команда позволяет ими управлять?
7.
Найдите информацию об утилитах top и htop. Каковы их функции?
8.
Назовите и дайте характеристику команде поиска файлов. Приведите примеры использования этой команды.
9.
Можно ли по контексту (содержанию) найти файл? Если да, то как?
10.
Как определить объем свободной памяти на жёстком диске?
11.
Как определить объем вашего домашнего каталога?
12.
Как удалить зависший процесс?
Лабораторная работа № 5. Поиск файлов. Перенаправление
ввода-вывода. Просмотр запущенных процессов
5.1.Цель работы
Ознакомление с инструментами поиска файлов и фильтрации текстовых данных. Приобретение практических навыков: по управлению процессами (и заданиями), по проверке использования диска и обслуживанию файловых систем.
5.2.Указания к работе
5.2.1.Перенаправление ввода-вывода
В системе по умолчанию открыто три специальных потока:
–
stdin — стандартный поток ввода (по умолчанию: клавиатура), файловый дескриптор 0;
–
stdout — стандартный поток вывода (по умолчанию: консоль), файловый дескриптор 1;
–
stderr — стандартный поток вывод сообщений об ошибках (по умолчанию: консоль), файловый дескриптор 2.
Большинство используемых в консоли команд и программ записывают результаты своей работы в стандартный поток вывода stdout. Например, команда ls выводит в стандартный поток вывода (консоль) список файлов в текущей директории. Потоки вывода и ввода можно перенаправлять на другие файлы или устройства. Проще всего это делается с помощью символов >, >>, <, <<.
Рассмотрим пример.
# Перенаправление stdout (вывода) в файл. # Если файл отсутствовал, то он
создаётся, # иначе -- перезаписывается.
# Создаёт файл, содержащий список дерева каталогов.
ls -lR > dir-tree.list
1>filename
# Перенаправление вывода (stdout) в файл "filename".
1>>filename
# Перенаправление вывода (stdout) в файл "filename", # файл открывается в
режиме добавления.
2>filename
# Перенаправление stderr в файл "filename".
2>>filename
# Перенаправление stderr в файл "filename", # файл открывается в режиме
добавления.
&>filename
# Перенаправление stdout и stderr в файл "filename".
5.2.2. Конвейер
Конвейер (pipe) служит для объединения простых команд или утилит в цепочки, в которых результат работы предыдущей команды передаётся последующей. Синтаксис следующий: команда 1 | команда 2
# означает, что вывод команды 1 передастся на ввод команде 2
Конвейеры можно группировать в цепочки и выводить с помощью перенаправления в файл, например: ls -la |sort > sortilg_list вывод команды ls -la передаётся команде сортировки sort\verb, которая пишет результат в файл sorting_list\verb.
Чаще всего скрипты на Bash используются в качестве автоматизации каких-то рутинных операций в консоли, отсюда иногда возникает необходимость в обработке stdout одной команды и передача на stdin другой команде, при этом результат выполнения команды должен обработан.
5.2.3. Поиск файла
Команда find используется для поиска и отображения на экран имён файлов, соответствующих заданной строке символов.
Формат команды: find путь [-опции]
Путь определяет каталог, начиная с которого по всем подкаталогам будет вестись поиск.
Примеры:
1.
Вывести на экран имена файлов из вашего домашнего каталога и его подкаталогов, начинающихся на f: find -name "f*" -print
Здесь — обозначение вашего домашнего каталога, -name — после этой опции указывается имя файла, который нужно найти, "f*" — строка символов, определяющая имя файла, -print — опция, задающая вывод результатов поиска на экран.
2.
Вывести на экран имена файлов в каталоге /etc, начинающихся с символа p: find /etc -name "p*" -print
3.
Найти в Вашем домашнем каталоге файлы, имена которых заканчиваются символом и удалить их: find -name "*" -exec rm "{}" \;
Здесь опция -exec rm "{}" \; задаёт применение команды rm ко всем файлам, имена которых соответствуют указанной после опции -name строке символов. Для просмотра опций команды find воспользуйтесь командой man.
5.2.4.Фильтрация текста
Найти в текстовом файле указанную строку символов позволяет команда grep.
Формат команды: grep строка имя_файла
Кроме того, команда grep способна обрабатывать стандартный вывод других команд (любой текст). Для этого следует использовать конвейер, связав вывод команды с вводом grep.
Примеры:
1.
Показать строки во всех файлах в вашем домашнем каталоге с именами, начинающимися на f, в которых есть слово begin: grep begin f*
2.
Найти в текущем каталоге все файлы, содержащих в имени «лаб»: ls -l | grep лаб
5.2.5.Проверка использования диска
Команда df показывает размер каждого смонтированного раздела диска.
Формат команды: df [-опции] [файловая_система]
Пример: df -vi
Команда du показывает число килобайт, используемое каждым файлом или каталогом.
Формат команды: du [-опции] [имя_файла...]
Пример. du -a /
На afs можно посмотреть использованное пространство командой fs quota
5.2.6.Управление задачами
Любую выполняющуюся в консоли команду или внешнюю программу можно запустить в фоновом режиме. Для этого следует в конце имени команды указать знак амперсанда &.
Например: gedit &
Будет запущен текстовой редактор gedit в фоновом режиме. Консоль при этом не будет заблокирована.
Запущенные фоном программы называются задачами (jobs). Ими можно управлять с помощью команды jobs, которая выводит список запущенных в данный момент задач. Для завершения задачи необходимо выполнить команду kill %номер задачи
5.2.7.Управление процессами
Любой команде, выполняемой в системе, присваивается идентификатор
процесса (process ID). Получить информацию о процессе и управлять им, пользуясь идентификатором процесса, можно из любого окна командного интерпретатора.
5.2.8.Получение информации о процессах
Команда ps используется для получения информации о процессах. Формат команды: ps [-опции]
Для получения информации о процессах, управляемых вами и запущенных
(работающих или остановленных) на вашем терминале, используйте опцию aux.
Пример: ps aux
Для запуска команды в фоновом режиме необходимо в конце командной строки указать знак & (амперсанд).
Пример работы, требующей много машинного времени для выполнения, и которую целесообразно запустить в фоновом режиме: find /var/log -name "*.log" -print
> l.log &
5.3.Последовательность выполнения работы
1.
Осуществите вход в систему, используя соответствующее имя пользователя.
2.
Запишите в файл file.txt названия файлов, содержащихся в каталоге /etc.
Допишите в этот же файл названия файлов, содержащихся в вашем домашнем каталоге.
3.
Выведите имена всех файлов из file.txt, имеющих расширение .conf, после чего запишите их в новый текстовой файл conf.txt.
4.
Определите, какие файлы в вашем домашнем каталоге имеют имена, начинавшиеся с символа c? Предложите несколько вариантов, как это сделать.
5.
Выведите на экран (постранично) имена файлов из каталога /etc, начинающиеся с символа h.
6.
Запустите в фоновом режиме процесс, который будет записывать в файл
/logfile файлы, имена которых начинаются с log.
7.
Удалите файл /logfile.
8.
Запустите из консоли в фоновом режиме редактор gedit.
9.
Определите идентификатор процесса gedit, используя команду ps, конвейер и фильтр grep. Как ещё можно определить идентификатор процесса?
10.
Прочтите справку (man) команды kill, после чего используйте её для завершения процесса gedit.
11.
Выполните команды df и du, предварительно получив более подробную информацию об этих командах, с помощью команды man.
12.
Воспользовавшись справкой команды find, выведите имена всех директорий, имеющихся в вашем домашнем каталоге.
5.4.Содержание отчёта
1.
Титульный лист с указанием номера лабораторной работы и ФИО студента.
2.
Формулировка цели работы.
3.
Описание результатов выполнения задания:
– скриншоты (снимки экрана), фиксирующие выполнение лаб. раб.; – листинги
(исходный код) программ (если они есть); – результаты выполнения программ.
4.
Выводы, согласованные с целью работы.
5.
Ответы на контрольные вопросы.
5.5.Контрольные вопросы
1.
Какие потоки ввода вывода вы знаете?
2.
Объясните разницу между операцией > и >>.
3.
Что такое конвейер?
4.
Что такое процесс? Чем это понятие отличается от программы?
5.
Что такое PID и GID?
6.
Что такое задачи и какая команда позволяет ими управлять?
7.
Найдите информацию об утилитах top и htop. Каковы их функции?
8.
Назовите и дайте характеристику команде поиска файлов. Приведите примеры использования этой команды.
9.
Можно ли по контексту (содержанию) найти файл? Если да, то как?
10.
Как определить объем свободной памяти на жёстком диске?
11.
Как определить объем вашего домашнего каталога?
12.
Как удалить зависший процесс?