mirror of
https://github.com/aaPanel/aaPanel.git
synced 2026-08-17 21:25:47 +02:00
1. Add disk IO information to the homepage 2. Add a clear list button in the upload window 3. Optimize the background task overhead of the panel 4. Optimize the disk information caching mechanism 5. Panel Pro edition is online 6. Optimize panel resource usage 7. Optimize SSL certificate renewal 8. Fix the problem of reporting an error when the security entrance is empty 9. Fix the problem of infinite recursion when copying directories in extreme cases
84 lines
2.0 KiB
Bash
84 lines
2.0 KiB
Bash
#!/bin/bash
|
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
|
export PATH
|
|
export LANG=en_US.UTF-8
|
|
export LANGUAGE=en_US:en
|
|
|
|
get_node_url(){
|
|
nodes=(http://183.235.223.101:3389 http://125.88.182.172:5880 http://128.1.164.196 http://103.224.251.67:5880 http://download.bt.cn);
|
|
i=1;
|
|
for node in ${nodes[@]};
|
|
do
|
|
start=`date +%s.%N`
|
|
result=`curl -sS --connect-timeout 3 -m 60 $node/check.txt`
|
|
if [ "$result" = 'True' ];then
|
|
end=`date +%s.%N`
|
|
start_s=`echo $start | cut -d '.' -f 1`
|
|
start_ns=`echo $start | cut -d '.' -f 2`
|
|
end_s=`echo $end | cut -d '.' -f 1`
|
|
end_ns=`echo $end | cut -d '.' -f 2`
|
|
time_micro=$(( (10#$end_s-10#$start_s)*1000000 + (10#$end_ns/1000 - 10#$start_ns/1000) ))
|
|
time_ms=$(($time_micro/1000))
|
|
values[$i]=$time_ms;
|
|
urls[$time_ms]=$node
|
|
i=$(($i+1))
|
|
if [ $time_ms -lt 50 ];then
|
|
break;
|
|
fi
|
|
fi
|
|
done
|
|
j=5000
|
|
for n in ${values[@]};
|
|
do
|
|
if [ $j -gt $n ];then
|
|
j=$n
|
|
fi
|
|
if [ $j -lt 50 ];then
|
|
break;
|
|
fi
|
|
done
|
|
if [ $j = 5000 ];then
|
|
NODE_URL='http://download.bt.cn';
|
|
else
|
|
NODE_URL=${urls[$j]}
|
|
fi
|
|
|
|
}
|
|
|
|
GetCpuStat(){
|
|
time1=$(cat /proc/stat |grep 'cpu ')
|
|
sleep 1
|
|
time2=$(cat /proc/stat |grep 'cpu ')
|
|
cpuTime1=$(echo ${time1}|awk '{print $2+$3+$4+$5+$6+$7+$8}')
|
|
cpuTime2=$(echo ${time2}|awk '{print $2+$3+$4+$5+$6+$7+$8}')
|
|
runTime=$((${cpuTime2}-${cpuTime1}))
|
|
idelTime1=$(echo ${time1}|awk '{print $5}')
|
|
idelTime2=$(echo ${time2}|awk '{print $5}')
|
|
idelTime=$((${idelTime2}-${idelTime1}))
|
|
useTime=$(((${runTime}-${idelTime})*3))
|
|
[ ${useTime} -gt ${runTime} ] && cpuBusy="true"
|
|
if [ "${cpuBusy}" == "true" ]; then
|
|
cpuCore=$((${cpuInfo}/2))
|
|
else
|
|
cpuCore=$((${cpuInfo}-1))
|
|
fi
|
|
}
|
|
GetPackManager(){
|
|
if [ -f "/usr/bin/yum" ] && [ -f "/etc/yum.conf" ]; then
|
|
PM="yum"
|
|
elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then
|
|
PM="apt-get"
|
|
fi
|
|
}
|
|
cpuInfo=$(getconf _NPROCESSORS_ONLN)
|
|
if [ "${cpuInfo}" -ge "4" ];then
|
|
GetCpuStat
|
|
else
|
|
cpuCore="1"
|
|
fi
|
|
GetPackManager
|
|
if [ ! $NODE_URL ];then
|
|
echo 'Selecting download node...';
|
|
get_node_url
|
|
fi
|