Linux 服务器信息检索

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何在Linux服务器上检索并显示系统信息。你要创建的 getinfo.sh 脚本可用于快速收集有关服务器硬件、软件和网络配置的重要详细信息。

👀 预览

$ sh getinfo.sh
## 示例
cpu数量: 8
总内存: 30G
可用内存: 10867M
磁盘大小: 20G
系统位数: 64
进程数: 40
软件数量: 1389
IP地址: 1.32.X.X

🎯 任务

在这个项目中,你将学习:

  • 如何检索服务器的CPU数量、总内存、可用内存、磁盘大小、系统位数、运行进程数、已安装软件包数量以及IP地址。
  • 如何使用各种Linux命令和工具,如 grepfreedfgetconfpsdpkg-queryip,来收集系统信息。
  • 如何编写一个zsh脚本,将这些命令组合起来,以全面概述服务器的状态。

🏆 成果

完成这个项目后,你将能够:

  • 理解如何使用 shell 脚本来自动收集系统信息。
  • 熟悉常用的Linux命令及其应用。
  • 创建一个可重复使用的脚本,执行该脚本可以快速检索并显示重要的服务器详细信息。
  • 应用你新学到的知识,更有效地监控和排查Linux系统故障。

创建 getinfo.sh 脚本

在这一步中,你将在 /home/labex/project 目录下创建 getinfo.sh 脚本。

  1. 打开一个文本编辑器,并在 /home/labex/project 目录下创建一个名为 getinfo.sh 的新文件。

  2. 在文件开头添加以下 shebang 行:

    #!/bin/zsh

    此行指定应使用 zsh shell 执行该脚本。

  3. 向脚本中添加以下注释:

    ## getinfo.sh - Linux 系统信息脚本
    ## 此脚本检索 Linux 服务器的 CPU、内存、磁盘及其他信息。

    这些注释简要描述了脚本的用途。

  4. 保存文件。

获取CPU信息

在这一步中,你将向 getinfo.sh 脚本添加一个函数,用于获取CPU的数量。

  1. 在文本编辑器中打开 getinfo.sh 脚本。

  2. 向脚本中添加以下函数:

    ## 函数:获取CPU信息
    cpu_num=$(grep -c '^processor' /proc/cpuinfo)

    此函数使用 grep 命令来统计 /proc/cpuinfo 文件中处理器条目的数量,该数量即代表CPU的数量。

  3. 保存对脚本所做的更改。

获取内存信息

在这一步中,你将向 getinfo.sh 脚本添加函数,以获取总内存大小和可用内存大小。

  1. 在文本编辑器中打开 getinfo.sh 脚本。

  2. 向脚本中添加以下函数:

    ## 函数:获取总内存大小(以GB为单位)
    memory_total=$(free -g | awk '/^Mem:/ {print $2}')
    
    ## 函数:获取可用内存大小(以MB为单位)
    memory_free=$(free -m | awk '/^Mem:/ {print $4}')

    第一个函数使用带 -g 选项的 free 命令来获取以GB为单位的总内存大小。第二个函数使用带 -m 选项的 free 命令来获取以MB为单位的可用内存大小。

  3. 保存对脚本所做的更改。

获取磁盘信息

在这一步中,你将向 getinfo.sh 脚本添加一个函数,用于获取根目录挂载的文件系统的总大小。

  1. 在文本编辑器中打开 getinfo.sh 脚本。

  2. 向脚本中添加以下函数:

    ## 函数:获取根文件系统的总磁盘大小(以GB为单位)
    disk_size=$(df -h / | awk '/\// {print $2}')

    此函数使用带 -h 选项的 df 命令来获取根目录(/)挂载的文件系统的总大小,然后使用 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 脚本添加一个函数,用于获取eth0网络接口的IP地址。

  1. 在文本编辑器中打开 getinfo.sh 脚本。

  2. 向脚本中添加以下函数:

    ## 函数:获取eth0的IP地址
    ip=$(ip addr show eth0 | awk '/inet / {print $2}' | sed's|/.*||')

    此函数使用 ip 命令获取eth0网络接口的IP地址,然后使用 awksed 提取IP地址。

  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 中练习更多实验以提升你的技能。