📌  相关文章
📜  菜单驱动的 Shell 脚本来检查内存和磁盘使用情况

📅  最后修改于: 2022-05-13 01:57:28.024000             🧑  作者: Mango

菜单驱动的 Shell 脚本来检查内存和磁盘使用情况

在 Linux 中,大多数时候,我们使用 bash 脚本来自动化操作。有些脚本只有一种功能,但有些脚本可以做不止一种功能。为此,我们必须提供菜单来选择现在应该执行哪个函数的选项。此脚本称为菜单驱动程序。

Free Commands:此命令显示可用空间总量以及系统中使用的内存量和交换内存量,以及内核使用的缓冲区。

句法:

$free [OPTION]

Option:指与free 命令兼容的选项。

例子:



df 命令: df命令(disk free 的缩写),用于显示与文件系统有关的有关总空间和可用空间的信息。

句法 :

df [OPTION]... [FILE]...

例子:

让我们看看菜单驱动程序的基本算法:

  • 首先,在脚本中创建所有由 bash 脚本执行的函数
  • 然后我们需要向用户提供菜单,用户必须从中选择选项。为此,创建一个函数,如显示菜单,其中包含具有该功能名称的所有选项。
  • 现在我们需要读取用户输入的选项,为此我们需要创建另一个函数来读取选项并处理输入。输入后使用 if 语句或 switch 语句但 switch 语句是好的。 switch 语句提到了所有功能与显示菜单函数相同的选项。然后 switch 语句会根据选择调用相应的函数。
  • 然后用一段时间调用show menu,取输入函数,直到用户不想退出程序。

逐步方法:

让我们看一个例子来更好地理解。我们将构建一个脚本,它执行两个功能,一个是检查内存使用情况,另一个是磁盘使用情况。现在让我们按照上面的算法移动。

第 1 步:我们将创建两个函数来检查内存使用情况和磁盘使用情况。



memoryUsage(){
        echo "Memory Usage:"
        free
        read -p "Press any key to Continue...."
}

diskUsage(){
        echo "Disk Usage:"
        df
        read -p "Press any key to Continue...."
}

现在我们已经创建了 memoryUsage函数,它提供了内存使用的详细信息和 diskUsage函数,它提供了有关磁盘使用的详细信息。

第 2 步:现在让我们创建一个菜单来向用户显示所需的选项

show_menu()
{
       clear
       echo "++++++++++++ MENU +++++++++++++"
       echo "1. Show Memory Usage."
       echo "2. Show DIsk Usage."
       echo "3. Exit"
       echo "+++++++++++++++++++++++++++++++"
}

show_menu()函数向用户显示菜单,其中包含三个选项:第一个用于内存使用,第二个用于磁盘使用,第三个用于退出程序。

第3步:现在让我们创建根据菜单和处理给定的输入这需要输入的函数:

take_input()
{
       local choice
       read -p "Select the option from above menu: " choice

       case $choice in
               1) memoryUsage ;;
               2) diskUsage ;;
               3) exit 0;;
               *) echo "Enter Valid Option!!"
                       read -p "Press any key to Continue...."

               esac
}

take_input函数接受输入并将其传递给函数的 switch 语句。它根据提供的选项调用函数。

第 4 步:现在让我们使用 while 循环调用 show_menu函数和 take_input函数,直到用户不想退出为止。

while true
do
       show_menu
       take_input
done

下面是完整的实现:

#!/bin/bash

# function to show memory usage
memoryUsage(){
       echo "Memory Usage:"
       free
       read -p "Press any key to Continue...."
}

# function to show disk usage
diskUsage(){
       echo "Disk Usage:"
       df
       read -p "Press any key to Continue...."
}

# function to show menu
show_menu()
{
       clear
       echo "++++++++++++ MENU +++++++++++++"
       echo "1. Show Memory Usage."
       echo "2. Show DIsk Usage."
       echo "3. Exit"
       echo "+++++++++++++++++++++++++++++++"
}

# function to take input
take_input()
{
        #take the input and store it in choice variable
       local choice
       read -p "Select the option from above menu: " choice
        
        #using swich case statement check the choice and call function.
       case $choice in
               1) memoryUsage ;;
               2) diskUsage ;;
               3) exit 0;;
               *) echo "Enter Valid Option!!"
                       read -p "Press any key to Continue...."

               esac
       }

# for loop to call the show_menu and take_input function.
while true
do
       show_menu
       take_input
done

输出: