lgq
2025-11-18 956f10584a109456c1bb8c72c9a4e02494812c03
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/sh
# 输出存储信息
echo -en "Content-type: text/html; charset=utf-8\n\n"
#*****************************************************
source ../bin/env.sh
db="../bin/db"
jsoner="../bin/jsoner"
 
path="/work/data"
 
 
df_output=$(df -h $path | tail -n 1)
 
# 解析输出字段
filesystem=$(echo "$df_output" | awk '{print $1}')
used=$(echo "$df_output" | awk '{print $3}')
available=$(echo "$df_output" | awk '{print $4}')
mounted_on=$(echo "$df_output" | awk '{print $6}')
 
# 提取数值和单位
used_value=$(echo "$used" | grep -oE '[0-9.]+')
used_unit=$(echo "$used" | grep -oE '[A-Za-z]+')
available_value=$(echo "$available" | grep -oE '[0-9.]+')
available_unit=$(echo "$available" | grep -oE '[A-Za-z]+')
 
if [[ "$used_unit" = "K" || "$used_unit" = "" ]]
then
    used_value="0"
    used_unit="M"
fi
 
if [[ "$used_unit" = "G" ]]
then
    # 使用awk替代bc进行乘法计算,%g自动处理小数位
    used_value=$(awk -v val="$used_value" 'BEGIN{printf "%g", val * 1024}')
    used_unit="M"
    used="$used_value$used_unit"
fi
 
if [[ "$available_unit" = "K" || "$available_unit" = "" ]]
then
    available_value="0"
    available_unit="M"
fi
 
if [[ "$available_unit" = "G" ]]
then
    # 使用awk替代bc进行乘法计算
    available_value=$(awk -v val="$available_value" 'BEGIN{printf "%g", val * 1024}')
    available_unit="M"
    available="$available_value$available_unit"
fi
 
# 确保单位一致
if [ "$used_unit" != "$available_unit" ]; then
    echo "错误:Used 和 Available 的单位不一致"
    exit 1
fi
 
# 计算 Size 字段的值(使用awk替代bc加法)
size_value=$(awk -v u="$used_value" -v a="$available_value" 'BEGIN{printf "%g", u + a}')
size="${size_value}${used_unit}"  # 保留单位
 
# 计算 Use% 字段的值(使用awk替代bc除法和乘法,保留两位小数)
use_percent_value=$(awk -v u="$used_value" -v s="$size_value" 'BEGIN{printf "%.2f", (u / s) * 100}')
use_percent="${use_percent_value}%"
 
 
 
# 输出解析结果
echo "{\"size\":\"$size\",\"used\":\"$used\",\"available\":\"$available\",\"use%\":\"$use_percent\"}"