#!/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> 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