介绍
在这个项目中,你将学习如何在 Linux 服务器上检索并显示系统信息。你要创建的 getinfo.sh 脚本可用于快速收集有关服务器硬件、软件和网络配置的重要详细信息。
👀 预览
$ sh getinfo.sh
## 示例
cpu数量: 8
总内存: 30G
可用内存: 10867M
磁盘大小: 20G
系统位数: 64
进程数: 40
软件数量: 1389
IP地址: 1.32.X.X
🎯 任务
在这个项目中,你将学习:
- 如何检索服务器的 CPU 数量、总内存、可用内存、磁盘大小、系统位数、运行进程数、已安装软件包数量以及 IP 地址。
- 如何使用各种 Linux 命令和工具,如
grep、free、df、getconf、ps、dpkg-query和ip,来收集系统信息。 - 如何编写一个 zsh 脚本,将这些命令组合起来,以全面概述服务器的状态。
🏆 成果
完成这个项目后,你将能够:
- 理解如何使用 shell 脚本来自动收集系统信息。
- 熟悉常用的 Linux 命令及其应用。
- 创建一个可重复使用的脚本,执行该脚本可以快速检索并显示重要的服务器详细信息。
- 应用你新学到的知识,更有效地监控和排查 Linux 系统故障。
创建 getinfo.sh 脚本
在这一步中,你将在 /home/labex/project 目录下创建 getinfo.sh 脚本。
打开一个文本编辑器,并在
/home/labex/project目录下创建一个名为getinfo.sh的新文件。在文件开头添加以下 shebang 行:
#!/bin/zsh此行指定应使用 zsh shell 执行该脚本。
向脚本中添加以下注释:
## getinfo.sh - Linux 系统信息脚本 ## 此脚本检索 Linux 服务器的 CPU、内存、磁盘及其他信息。这些注释简要描述了脚本的用途。
保存文件。
获取 CPU 信息
在这一步中,你将向 getinfo.sh 脚本添加一个函数,用于获取 CPU 的数量。
在文本编辑器中打开
getinfo.sh脚本。向脚本中添加以下函数:
## 函数:获取 CPU 信息 cpu_num=$(grep -c '^processor' /proc/cpuinfo)此函数使用
grep命令来统计/proc/cpuinfo文件中处理器条目的数量,该数量即代表 CPU 的数量。保存对脚本所做的更改。
获取内存信息
在这一步中,你将向 getinfo.sh 脚本添加函数,以获取总内存大小和可用内存大小。
在文本编辑器中打开
getinfo.sh脚本。向脚本中添加以下函数:
## 函数:获取总内存大小(以 GB 为单位) memory_total=$(free -g | awk '/^Mem:/ {print $2}') ## 函数:获取可用内存大小(以 MB 为单位) memory_free=$(free -m | awk '/^Mem:/ {print $4}')第一个函数使用带
-g选项的free命令来获取以 GB 为单位的总内存大小。第二个函数使用带-m选项的free命令来获取以 MB 为单位的可用内存大小。保存对脚本所做的更改。
获取磁盘信息
在这一步中,你将向 getinfo.sh 脚本添加一个函数,用于获取根目录挂载的文件系统的总大小。
在文本编辑器中打开
getinfo.sh脚本。向脚本中添加以下函数:
## 函数:获取根文件系统的总磁盘大小(以 GB 为单位) disk_size=$(df -h / | awk '/\// {print $2}')此函数使用带
-h选项的df命令来获取根目录(/)挂载的文件系统的总大小,然后使用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 脚本添加一个函数,用于获取 eth0 网络接口的 IP 地址。
在文本编辑器中打开
getinfo.sh脚本。向脚本中添加以下函数:
## 函数:获取 eth0 的 IP 地址 ip=$(ip addr show eth0 | awk '/inet / {print $2}' | sed's|/.*||')此函数使用
ip命令获取 eth0 网络接口的 IP 地址,然后使用awk和sed提取 IP 地址。保存对脚本所做的更改。
输出系统信息
在这最后一步中,你将向 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 中练习更多实验以提升你的技能。



