Выполнение работы
Команды top, free, ps
Команда top показывает список работающих
в данный момент процессов и информацию
о них, включая использование ими памяти
и процессора. Список интерактивно
формируется в реальном времени.
Рисунок 1. Вывод команды top
Команда free может быть использована со следующими ключами
Рисунок 2. Список опций команды free
Рисунок 3. Примеры использования команды free: без доп параметров, попытка использолвания сразу нескольких (выполено действие заданное последним), вывод в мегабайтах.
Команда ps выводит в стандартный вывод информацию о текущем состоянии процессов.
Опции:
-a все терминальные процессы
-e все процессы.
-g список выбирать процессы по списку лидеров групп.
-p список выбирать процессы по списку идентификаторов процессов.
-t список выбирать процессы по списку терминалов
-u список выбирать процессы по списку идентификаторов пользователей.
-f генерировать полный листинг
-l генерировать листинг в длинном формате.
Рисунок 4. Результат выполнения команды ps с использованием различных опций.
Домашний каталог
Рисунок 5. Переход в домашний каталог при помощи выполнения команды смены директории – cd. При помощи ls можно увидеть как хранятся ваши пользовательские файлы и настройки.
Создание директорий
Рисунок 6. Добавлена новая папка inform_gorodetskiy при помощи выполнения команды создания директории – mkdir. При помощи ls можно увидеть актуальный список файлов и папок.
Рисунок 7. Для перехода в свежесозданную папку использована известная команда cd. Чтобы не прописывать название папки целиком, можно ввести пару первых символов названия и прожать клавишу TAB. Для создания папки lab1 в очередной раз в терминал была введена команда mkdir. При помощи ls выяснено, что предыдущая команда и правда создала новую папку, а также в этой директории на данный момент больше ничего нет.
Рисунок 8. По аналогии с предыдущими шагами, была осуществлена смена текущей директории на lab1. Был создан file1 при помощи команды echo – она позволяет записывать написанные данные сразу в файл, не открывая его, при этом, если файл с указанными именем отсутвтвует в текущей директории, то он будет создан автоматически, в чем можно удебиться при помощи команды ls. Исполльзуя команду nano и выбрав файл (при момощи самой востребованной клавиши в *nix ОС – TAB)
Рисунок 9. Просмотр содержимого файла file1. Чтобы выйти из текстового редактора, было использовано сочетания CTRL+X.
Рисунок 10. Были созданы папки catalog1 и catalog2, проведена проверка содержимого текущей директории. Очень радует, что в bash имеется функция history, которая позволяет в открытом терминалде при момощи стрелочек вверх и вниз перелистывать недавно введенные команды с возможностью их отредактировать и выполнить.
Рисунок 11. Был совершен ошибочный переход, для этого чтобы подняться использована команда cd .. . Команда ls подтвердила пустоту папки, после чего при помощи вызова консольного приложения текстового редактора nano (прожимая сочетания CTRL+O затем ENTER затем CTRL+X) были созданы поочередно file3 и file4 (пропуская file2). Также создан catalog3.
Рисунок 12. Подтверждение сохранения файла, в данном случае – пустого.
Рисунок 13. Переход в catalog3 создание file5.
ln – жесткая ссылка, по сути – это копия оригинального файла, которая изменяется, если изменяют оригинальный файл.
ln -s символьная ссылка - по сути – это как ярлык в ОС Виндовс.
Рисунок 14. Возвращаясь к рисунку 8, можно уточнить директорию file1. Командой ln была создана ссылка.
Из определения жесткой ссылки очевидно, что она не может быть использована в отношении каталога, даже при помощи прав суперпользователя.
Рисунок 15. Ошибка: п.3.5 задания лабораторной работы невыполним.
Рисунок 16. Создана нежная ссылка. Стоит уточнить, что в теминале отображается неполный путь: тильда показывает домашнюю директорию. При создании ссылки, прописывается команда ln, параметр (если нужен), путь необходимого файла и путь сохранения с будующим именем. Если не указывать путь сохранения, то ссылка будет сохранена в папке выполнения с именем исходного файла.
Команда tree
Рисунок 17. Установка утилиты и проверка её работоспособности.
Рисунок 18. Потребовалось повторить установку иной предложенной командой.
Рисунок 19. Проверка выполения команды tree –а. Показана файловая структура в графическом виде удобном для восприятия людей.
до тех пор, пока
Скрипты
Рисунок 20. Создана и открыта директория.
Рисунок 21. При помощи команды nano создан новый текстовой файл. Чтобы сохранить его как скрипт, было задано имя файлс с расширением .sh, после чего написанный код приобрел тактическую раскрасску.
Рисунок 22. Проверено наличие скрипта в папке. Чтобы было его Использована команда chmod +x str_eq.sh в терминале. Эта команда предоставляет права на исполнение скрипту. Введена команду ./ str_eq.sh "строка 1" "строка 2" в терминале. ./ - указывает на то, что скрипт запущен из текущей директории. "строка 1" "строка 2" - это аргументы, которые передаются скрипту для сравнения. Аргументы сравниваются корректно, при вводе аргументов суммарно от двух, выводится сообщение о неравенстве.
При попытке запуска кода в других терминалах может произойти ошибка, но опытные программисты раскрыли свой секрет для превосходного результата, досточно указать вначале скрипта обычный #!/bin/bash - Эта строка называется "shebang" и указывает интерпретатор, который будет использоваться для запуска скрипта. В данном случае это Bash shell.
$# - Переменная, которая хранит количество аргументов, переданных скрипту.
$1 - Переменная, которая хранит первый аргумент, переданный скрипту.
$2 - Переменная, которая хранит второй аргумент, переданный скрипту.
echo - Команда, которая выводит текст на экран.
Рисунок 23. Добавлена проверка числа введенных аргументов. [ ... ] - Это оператор проверки условий. В нашем случае он сравнивает значения переменных $1 и $2.
Рисунок 24. Проверка показала отличную работу проверки условий.
Рисунок 25. Написан новый скрипт для поиска наибольшего числа при помощи операции -gt – больше.
Рисунок 26. Скрипт был подключен и успешно выполняет поставленную задачу. При помощи выбранного метода доступно сравнение только целочисленных значений.
Рисунок 27. Создан скрипт записи введенных строк и ожмдания ввода фамилии.
Рисунок 28. Скрипт принимает строки на ввод, после введенной фаимлии вывел их.
Рисунок 29. Создан скрипт принимающий числа на вход и выводящий их количество после введения четного.
Рисунок 30. Скрипт действиельно справляется с поставленной задачей.
Рисунок 31. Создан скрипт для проверки домашней директории. Команда pwd (present working directory) выводит текущий путь. Если вы не уверены, где находится ваш домашний каталог, вы можете найти его в переменной окружения HOME. Если вывод команды pwd совпадает с выводом команды echo $HOME, значит процесс запущен из домашнего каталога.
Рисунок 32. Проверка показала корректную работу программы. При запуске домашнего каталога выводится его путь
Cкрипт на языке bash c выводом меню, состоящего из пунктов выбора выводимой информации.
Рисунок 32. Создан скрипт выводящий текстовое меню и ожидающий номер интересующего пункта для получения конкретной информации. show_menu(): Функция, которая выводит меню с доступными вариантами. while true; do ... done: Бесконечный цикл, который выполняет код в нем до тех пор, пока не будет выполнен exit 0. Для вывода запрашиваемых данных применяются основные команды с конкретизирующими ключами.
Рисунок 32. Созданный скрипт успешно выполняется. При вводе с клавиатуры необходимого номера строки меню, осуществляется вывод информации. Процесс завершается при выборе пункта номер 8.
Вывод
В лабораторной работе используется несколько ключевых методов и команд, которые позволяют управлять процессами, работать с файлами и каталогами, а также получать различную системную информацию. Вот некоторые основные команды с короткими описаниями:
Лабораторная работа по Bash оказалась насыщенной и познавательной. Она позволила глубже погрузиться в мир командных интерфейсов и автоматизации задач. Каждый шаг работы был продуманным и методичным, начиная от анализа системной информации.
Благодаря разнообразным инструментам, таким как cd, mkdir, echo, ls, nano и многим другим, удалось гибко управлять файловой системой, создавая и удаляя директории, а также манипулируя файлами. Особое внимание заслуживает применение ссылок, будь то жесткие или символические, которые облегчают организацию данных и уменьшают вероятность ошибок.
Основные команды:
top: Показывает список работающих процессов и их метрики в реальном времени. Используется для мониторинга загруженности системы.
free: Выводит информацию о свободной и занятой оперативной памяти. Можно использовать с различными параметрами для получения детальной информации.
ps: Просматривает текущие состояния процессов. Поддерживает множество опций для фильтрации результатов вывода.
cd: Перемещает пользователя в указанный каталог.
mkdir: Создает новый каталог.
echo: Записывает строку текста в файл или выводит написанный текст или результат команды в терминале.
ls: Список содержимого текущего каталога.
nano: Текстовый редактор для редактирования файлов.
history: Позволяет просматривать историю команд, ранее введенных в терминале.
Top: Мониторинг состояния системы в реальном времени.
Free: Получение информации об использовании оперативной памяти.
Ps: Получение списка активных процессов.
Cd: Переход между директориями.
Mkdir: Создание новых директорий.
Echo: Запись текста в файл.
Ls: Получение списка файлов и директорий.
Nano: Редактор для работы с текстовыми файлами.
History: Просмотр истории команд.
Tree: Показ структуры каталогов в графическом виде.
Ln: Создание жестких и символических ссылок.
Shebang: Указатель на интерпретатор, который будет использоваться для запуска скрипта.
Chmod: Управление правами доступа к файлам и директориям.
Echo: Вывод текста на экран.
Pwd: Вывод текущего пути.
Exit: Завершение выполнения скрипта.
Несомненным преимуществом стало знакомство с методами написания скриптов. Эти навыки оказались крайне полезны для автоматизации рутинных операций и организации логического ветвления с использованием условных операторов и циклов.
Подводя итог, могу сказать, что данная лабораторная работа значительно повысила мой уровень владения Bash и продемонстрировала мощь командного подхода к управлению системой. Каждая задача, выполненная в рамках работы, углубила мои знания и подарила новые инструменты для решения широкого спектра задач.
