Введение
В этом проекте вы научитесь получать и отображать информацию о системе на сервере Linux. Скрипт getinfo.sh, который вы создадите, можно использовать для быстрого сбора важных сведений о железе, ПО и сети сервера.
👀 Предварительный просмотр
$ sh getinfo.sh
## Пример
количество ядер процессора: 8
общий объем памяти: 30 Г
доступная память: 10867 М
размер диска: 20 Г
разрядность системы: 64
процессов: 40
количество установленных программ: 1389
IP-адрес: 1.32.X.X
🎯 Задачи
В этом проекте вы научитесь:
- Получать количество ядер процессора, общий объем памяти, доступную память, размер диска, разрядность системы, количество запущенных процессов, количество установленных пакетов программ и IP-адрес сервера.
- Использовать различные команды и инструменты Linux, такие как
grep,free,df,getconf,ps,dpkg-queryиip, для сбора информации о системе. - писать скрипт zsh, который объединяет эти команды для получения полного представления о состоянии сервера.
🏆 Достижения
После завершения этого проекта вы сможете:
- понять, как использовать shell-скриптинг для автоматизации сбора информации о системе.
- познакомиться с часто используемыми командами Linux и их приложениями.
- создать повторно используемый скрипт, который можно выполнить для быстрого получения и отображения важных сведений о сервере.
- применить свои новые знания для более эффективного мониторинга и устранения неполадок в Linux-системах.
Создать скрипт getinfo.sh
В этом шаге вы создадите скрипт getinfo.sh в директории /home/labex/project.
Откройте текстовый редактор и создайте новый файл с именем
getinfo.shв директории/home/labex/project.Добавьте следующую строку-интерпретатор в начало файла:
#!/bin/zshЭта строка указывает, что скрипт должен выполняться с использованием оболочки zsh.
Добавьте следующие комментарии в скрипт:
## getinfo.sh - Linux System Information Script ## Этот скрипт получает информацию о CPU, памяти, диске и других параметрах сервера Linux.Эти комментарии дают краткое описание назначения скрипта.
Сохраните файл.
Получить информацию о CPU
В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить количество ядер процессора.
Откройте скрипт
getinfo.shв текстовом редакторе.Добавьте следующую функцию в скрипт:
## Функция: Получение информации о CPU cpu_num=$(grep -c '^processor' /proc/cpuinfo)Эта функция использует команду
grepдля подсчета количества записей о процессорах в файле/proc/cpuinfo, что соответствует количеству ядер процессора.Сохраните изменения в скрипте.
Получить информацию о памяти
В этом шаге вы добавите функции в скрипт getinfo.sh, чтобы получить общий размер памяти и размер доступной памяти.
Откройте скрипт
getinfo.shв текстовом редакторе.Добавьте следующие функции в скрипт:
## Функция: Получение общего размера памяти (в Гб) memory_total=$(free -g | awk '/^Mem:/ {print $2}') ## Функция: Получение размера доступной памяти (в Мб) memory_free=$(free -m | awk '/^Mem:/ {print $4}')Первая функция использует команду
freeс параметром-g, чтобы получить общий размер памяти в гигабайтах. Вторая функция использует командуfreeс параметром-m, чтобы получить размер доступной памяти в мегабайтах.Сохраните изменения в скрипте.
Получить информацию о диске
В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить общий размер файловой системы, монтируемой на корневой каталог.
Откройте скрипт
getinfo.shв текстовом редакторе.Добавьте следующую функцию в скрипт:
## Функция: Получение общего размера диска для корневой файловой системы (в Гб) disk_size=$(df -h / | awk '/\// {print $2}')Эта функция использует команду
dfс параметром-h, чтобы получить общий размер файловой системы, монтируемой на корневом каталоге (/), а затем извлекает значение размера с использованиемawk.Сохраните изменения в скрипте.
Получить информацию о размере системы (бит)
В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить информацию о размере системы.
Откройте скрипт
getinfo.shв текстовом редакторе.Добавьте следующую функцию в скрипт:
## Функция: Получение размера системы system_bit=$(getconf LONG_BIT)Эта функция использует команду
getconf, чтобы получить количество бит, используемых системой.Сохраните изменения в скрипте.
Получить информацию о процессах
В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить количество текущих запущенных процессов.
Откройте скрипт
getinfo.shв текстовом редакторе.Добавьте следующую функцию в скрипт:
## Функция: Получение количества текущих запущенных процессов process=$(ps -ef | wc -l)Эта функция использует команду
ps, чтобы вывести список всех запущенных процессов, а затем подсчитывает количество строк с помощью командыwc.Сохраните изменения в скрипте.
Получить информацию о программном обеспечении
В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить количество установленных пакетов программного обеспечения.
Откройте скрипт
getinfo.shв текстовом редакторе.Добавьте следующую функцию в скрипт:
## Функция: Получение количества установленных пакетов программного обеспечения software_num=$(dpkg-query -f '${binary:Package}\n' -W | wc -l)Эта функция использует команду
dpkg-query, чтобы вывести список всех установленных пакетов программного обеспечения, а затем подсчитывает количество строк с помощью командыwc.Сохраните изменения в скрипте.
Получить информацию об IP-адресе
В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить IP-адрес сетевого интерфейса eth0.
Откройте скрипт
getinfo.shв текстовом редакторе.Добавьте следующую функцию в скрипт:
## Функция: Получение IP-адреса eth0 ip=$(ip addr show eth0 | awk '/inet / {print $2}' | sed 's|/.*||')Эта функция использует команду
ip, чтобы получить IP-адрес сетевого интерфейса eth0, а затем извлекает IP-адрес с использованиемawkиsed.Сохраните изменения в скрипте.
Вывести информацию о системе
В этом финальном шаге вы добавите раздел вывода в скрипт getinfo.sh, чтобы отобразить информацию о системе.
Откройте скрипт
getinfo.shв текстовом редакторе.Добавьте следующий раздел вывода в скрипт:
## Вывод информации echo "cpu num: $cpu_num" echo "memory total: $memory_total G" echo "memory free: $memory_free M" echo "disk size: $disk_size" echo "system bit: $system_bit" echo "process: $((process - 1))" echo "software num: $software_num" echo "ip: $ip"Этот раздел использует команду
echo, чтобы вывести информацию о системе в требуемом формате.Сохраните изменения в скрипте.
Поздравляем! Теперь вы завершили скрипт getinfo.sh. Вы можете выполнить скрипт, запустив следующую команду в терминале:
sh getinfo.sh
Скрипт выведет информацию о системе, как указано в требованиях проекта.
## Пример
cpu num: 8
memory total: 30 G
memory free: 10867 M
disk size: 20G
system bit: 64
process: 40
software num: 1389
ip: 1.32.X.X
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



