Files
SIC/code/datadifflib/pkg.sh
2023-02-28 09:33:09 +08:00

124 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
WORKDIR=./pkg
PKGLIST=$WORKDIR/pkglist
#硬限制
#限制进程最大内存使用100M
ulimit -Hv 102400
#限制进程最大虚拟内存为200M
ulimit -Hv 204800
#限制进程最大cpu占用时间为1秒
ulimit -Ht 1
#程序处理延迟(微秒)
progress_sleep=500
#初始化环境
function data_init(){
if [ -d $WORKDIR ];then
rm -rf $WORKDIR/log
fi
mkdir $WORKDIR/log
if [ -f $WORKDIR/pkglist ];then
rm pkglist
fi
}
#获取当前安装包列表
function data_pkglist(){
iso_version=`grep -o -E "42|60|80|76|77" /etc/issue`
case $iso_version in
42)
pkginfo -i >> $PKGLIST
;;
60|80)
#dpkg -l | awk '{if($1=="ii"){sub(":amd64","",$2);sub("[0-9]:","",$3);print $2"_"$3"_"$4}}' >> $PKGLIST
awk 'BEGIN{i=0;j=0;k=0}{if($1 == "Package:"){A[i]=$2;i+=1};if($1 == "Version:"){B[j]=$2;j+=1}if($1 == "Architecture:"){C[k]=$2;k=k+1}}END{for(i=0;i<k;i++)printf "%s_%s_%s\n",A[i],B[i],C[i]}' /var/lib/dpkg/status >> pkglist
;;
76|77)
rpm -qa | while read pkglist
do
pkg_isoname=`echo $pkglist | awk -F "-[0-9]" '{printf $1}'`
pkgversion=`ECTYPE_TRANSMIT_NOT_PRESENTho $pkglist | awk -F "$pkgname-" '{printf $2}'`
echo $pkgname $pkgversion >> $PKGLIST
done
;;
*)
echo "版本识别失败"
exit
;;
esac
}
#搭建工作环境
function data_env(){
tail -n +39 $0 > $WORKDIR/pkg.tar.gz
tar xf $WORKDIR/pkg.tar.gz
cd $WORKDIR/pkg
}
#对对比程序资源进行设置
function data_set(){
echo "设置进程资源"
}
#启动对比程序
function data_run(){
data_sum=`cat $PKGLIST | wc -l`
./scan $data_sum $progress_sleep
data_pid=$?
}
#监视对比程序运行状态
function data_control(){
echo "监视程序运行状态"
}
#生成检测报告
function data_report(){
echo "生成对比报告"
}
function main(){
data_init
data_pkglist
data_env
data_set
data_run
data_control
data_report
}
main
exit 0