Получение информации о сервере Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь получать и отображать информацию о системе на сервере 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.

  1. Откройте текстовый редактор и создайте новый файл с именем getinfo.sh в директории /home/labex/project.

  2. Добавьте следующую строку-интерпретатор в начало файла:

    #!/bin/zsh

    Эта строка указывает, что скрипт должен выполняться с использованием оболочки zsh.

  3. Добавьте следующие комментарии в скрипт:

    ## getinfo.sh - Linux System Information Script
    ## Этот скрипт получает информацию о CPU, памяти, диске и других параметрах сервера Linux.

    Эти комментарии дают краткое описание назначения скрипта.

  4. Сохраните файл.

Получение информации о CPU

В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить количество ядер процессора.

  1. Откройте скрипт getinfo.sh в текстовом редакторе.

  2. Добавьте следующую функцию в скрипт:

    ## Функция: Получение информации о CPU
    cpu_num=$(grep -c '^processor' /proc/cpuinfo)

    Эта функция использует команду grep для подсчета количества записей о процессорах в файле /proc/cpuinfo, что соответствует количеству ядер процессора.

  3. Сохраните изменения в скрипте.

Получение информации о памяти

В этом шаге вы добавите функции в скрипт getinfo.sh, чтобы получить общий размер памяти и размер доступной памяти.

  1. Откройте скрипт getinfo.sh в текстовом редакторе.

  2. Добавьте следующие функции в скрипт:

    ## Функция: Получение общего размера памяти (в Гб)
    memory_total=$(free -g | awk '/^Mem:/ {print $2}')
    
    ## Функция: Получение размера доступной памяти (в Мб)
    memory_free=$(free -m | awk '/^Mem:/ {print $4}')

    Первая функция использует команду free с параметром -g, чтобы получить общий размер памяти в гигабайтах. Вторая функция использует команду free с параметром -m, чтобы получить размер доступной памяти в мегабайтах.

  3. Сохраните изменения в скрипте.

Получение информации о диске

В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить общий размер файловой системы, монтируемой на корневой каталог.

  1. Откройте скрипт getinfo.sh в текстовом редакторе.

  2. Добавьте следующую функцию в скрипт:

    ## Функция: Получение общего размера диска для корневой файловой системы (в Гб)
    disk_size=$(df -h / | awk '/\// {print $2}')

    Эта функция использует команду df с параметром -h, чтобы получить общий размер файловой системы, монтируемой на корневом каталоге (/), а затем извлекает значение размера с использованием awk.

  3. Сохраните изменения в скрипте.

Получение информации о размере системы

В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить информацию о размере системы.

  1. Откройте скрипт getinfo.sh в текстовом редакторе.

  2. Добавьте следующую функцию в скрипт:

    ## Функция: Получение размера системы
    system_bit=$(getconf LONG_BIT)

    Эта функция использует команду getconf, чтобы получить количество бит, используемых системой.

  3. Сохраните изменения в скрипте.

Получение информации о процессах

В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить количество текущих запущенных процессов.

  1. Откройте скрипт getinfo.sh в текстовом редакторе.

  2. Добавьте следующую функцию в скрипт:

    ## Функция: Получение количества текущих запущенных процессов
    process=$(ps -ef | wc -l)

    Эта функция использует команду ps, чтобы вывести список всех запущенных процессов, а затем подсчитывает количество строк с помощью команды wc.

  3. Сохраните изменения в скрипте.

Получение информации о программном обеспечении

В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить количество установленных пакетов программного обеспечения.

  1. Откройте скрипт getinfo.sh в текстовом редакторе.

  2. Добавьте следующую функцию в скрипт:

    ## Функция: Получение количества установленных пакетов программного обеспечения
    software_num=$(dpkg-query -f '${binary:Package}\n' -W | wc -l)

    Эта функция использует команду dpkg-query, чтобы вывести список всех установленных пакетов программного обеспечения, а затем подсчитывает количество строк с помощью команды wc.

  3. Сохраните изменения в скрипте.

Получение информации об IP-адресе

В этом шаге вы добавите функцию в скрипт getinfo.sh, чтобы получить IP-адрес сетевого интерфейса eth0.

  1. Откройте скрипт getinfo.sh в текстовом редакторе.

  2. Добавьте следующую функцию в скрипт:

    ## Функция: Получение IP-адреса eth0
    ip=$(ip addr show eth0 | awk '/inet / {print $2}' | sed 's|/.*||')

    Эта функция использует команду ip, чтобы получить IP-адрес сетевого интерфейса eth0, а затем извлекает IP-адрес с использованием awk и sed.

  3. Сохраните изменения в скрипте.

Вывод информации о системе

В этом финальном шаге вы добавите раздел вывода в скрипт getinfo.sh, чтобы отобразить информацию о системе.

  1. Откройте скрипт getinfo.sh в текстовом редакторе.

  2. Добавьте следующий раздел вывода в скрипт:

    ## Вывод информации
    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, чтобы вывести информацию о системе в требуемом формате.

  3. Сохраните изменения в скрипте.

Поздравляем! Теперь вы завершили скрипт 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, чтобы улучшить свои навыки.