tool.ksh

本文介绍了一套Shell脚本工具集,包括文件查找、日志检查、数据库连接及代码检出等功能。通过这些脚本可以高效地进行系统维护工作,如快速定位文件、检查指定日志中的错误信息、连接特定的数据库以及从版本控制系统中检出代码。
#! /bin/sh


#########################find some specified string in files############################
fs()
{
if [ $# -lt 1 ];then
echo "#####################################find string in file USAGE##############################"
echo "Usage: if you find file in the current directroy ---------------- ff FILE_NAME"
echo "if you want to find error/exception string for the specific package or server log ------------- fs PACKAGE_NAME STRING1 STRING2 ....."
echo "for example: --------------------- for gollfDmain ---------------------------"
echo "-------------fs ds error exception-----------------"
echo "-------------fs server error exception-------------"
echo "-------------fs node1 error------------------------"
echo "--------------------------------------------------------------"
echo "--------------for gollfirmDomain:------------------"
echo "-------------fs ids error exception-----------------"
echo "-------------fs iserver error exception-------------"
echo "-------------fs inode1 error------------------------"

return
fi
PACKAGE_LOG=$1

case "$PACKAGE_LOG" in
"a")
OBJECT="a.log" ;;
"b")
OBJECT="b.log" ;;
"c")
OBJECT="c.log" ;;
*)
OBJECT=$PACKAGE_LOG
;;
esac

shift

until [ $# -eq 0 ];do
SEARCH_STRING=$1
echo "SEARCH_STRING is $SEARCH_STRING"
find $OBJECT -exec grep -i "$SEARCH_STRING" '{}' /dev/null \;
shift
done

}


##################################find a file###########################################
ff()
{
if [ $# -lt 1 ];then
echo "#####################################find file USAGE##############################"
echo "Usage: if you find file in the current directroy ---------------- ff FILE_NAME"
echo "if you want to fine file in the specific directory ---------------- ff DIR_FOLDER FILE_NAME"
return
elif [ $# -eq 1 ];then
FILE_NAME=$1
DIR="."
elif [ $# -eq 2 ];then
DIR=$1
FILE_NAME=$2
fi
find $DIR -type f -name "$FILE_NAME"

}

################################check log ##############################################
checklog()
{
if [ $# -lt 1 ];then
echo "#####################################checklog USAGE##############################"
echo "Usage: checklog APPLICATION_NAME PACKAGE_NAME LINE_NUMBER"
return
elif [ $# -eq 3 ];then
APP_NAME=$1
PACKAGE=$2
LINE=$3
fi

if [ $APP_NAME = "a" ];then
cd /aa
case "$PACKAGE" in
"a")
tail -${LINE}f a.log ;;
"b")
tail -${LINE}f b.log ;;
"c")
tail -${LINE}f c.log ;;
*)
echo "invalid package name!!!!"
;;
esac
elif [ $APP_NAME = "b" ];then
cd /bb
case "$PACKAGE" in
"a")
tail -${LINE}f a.log ;;
"b")
tail -${LINE}f b.log ;;
"c")
tail -${LINE}f c.log ;;
*)
echo "invalid package name!!!!"
;;
esac

fi

}


###########################connect DB using sqlplus###########################################################3
conndb()
{
if [ $# -lt 1 ];then
echo "#####################################conndb USAGE##############################"
echo "Usage: conn DB_NAME"
return
fi
SERVER_NAME=$1
case "$SERVER_NAME" in
"aDB")
CONNECTION="username1/pwd1@serverName1:port1/dbName1" ;;
"bDB")
CONNECTION="username2/pwd2@serverName2:port2/dbName2" ;;
*)
echo "invalid DB name"
;;
esac
echo "enter connection....."
sqlplus $CONNECTION

}


#######################################check out code#######################################################
checkout()
{
if [ $# -lt 1 ];then
echo "#####################################checkout USAGE##############################"
echo "Usage: check out code from trunk ----------------- checkout MODULE_NAME"
echo "check out code from branch ----------------- checkout BRANCH_NAME MODULE_NAME"
return
fi
BRANCH=""
# check args
if [ $# -eq 2 ]
then
BRANCH="-r $1"
case "$2" in
"A")
MODULE="AA/BB/CC" ;;
"B")
MODULE="BB/CC/DD" ;;
*)
echo "invalid package name"
exit 1
;;
esac
else
case "$1" in
"A")
MODULE="AA/BB/CC" ;;
"B")
MODULE="BB/CC/DD" ;;
*)
echo "invalid package name"
;;
esac
fi

USERID=`whoami`
CVS=/xenv/cvs/X/1.11.22/bin/cvs
CVSROOT=":ServerType:USERID@servername:port/CVSRepository"
export CVSROOT
WORKING_DIR=`pwd`
COMMON="aa/common"

cd $WORKING_DIR
echo "Removing old files..."
rm -rf $COMMON
rm -rf $MODULE

if [ $BRANCH ];then
echo "Checking out $MODULE from branch $BRANCH........"
else
echo "Checking out $MODULE from head"
fi

if [ $MODULE = "gollf" ];then
${CVS} -Q checkout -P $BRANCH $MODULE
else
${CVS} -Q checkout -P $BRANCH $COMMON
${CVS} -Q checkout -P $BRANCH $MODULE
fi
cd $MODULE

}

###################################create branch based on a tag##############################################
branch()
{
if [ $# -lt 1 ];then
echo "#####################################branch USAGE##############################"
echo "Usage: branch BRANCH_NAME"
return
fi
BRANCH_NAME=$1
CVSROOT=":ServerType:USERID@servername:port/CVSRepository"
export CVSROOT
cvs rtag Root_${BRANCH_NAME} Project_Name
cvs rtag -b -r Root_${BRANCH_NAME} ${BRANCH_NAME} Project_Name

}
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). if [ "${PS1-}" ]; then if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then # The file bash.bashrc already sets the default PS1. # PS1='\h:\w\$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset i fi lib_paths=( "/host/Tool/Ubuntu20/release/release/ai_tool/novatek/novaic/toolchain/repo/proprietary/opencv/lib" "/host/Tool/Ubuntu20/release/release/ai_tool/novatek/novaic/toolchain/repo/proprietary/runtime/hdal/vendor/ai2/source_pub/vendor_ai_cpu/nn_dli_cpu/prebuilt/lib" "/host/Tool/Ubuntu20/release/release/ai_tool/novatek/novaic/toolchain/repo/proprietary/cmake/onnc_V25P/lib" "/host/Tool/Ubuntu20/release/release/ai_tool/novatek/novaic/toolchain/repo/proprietary/runtime64/hdal/vendor/ai2/source_pub/vendor_ai_cpu/nn_dli_cpu/prebuilt/lib" "/host/Tool/Ubuntu20/release/release/ai_tool/novatek/novaic/toolchain/closeprefix/usr/local/onnx_1_3/lib" "/host/Tool/Ubuntu20/release/release/ai_tool/novatek/novaic/toolchain/closeprefix/usr/local/onnx/lib" "/host/Tool/Ubuntu20/release/release/ai_tool/novatek/novaic/toolchain/closeprefix/bin/simulator/emuV30_635/qemu/lib" ) for path in "${lib_paths[@]}"; do if [ -d "$path" ]; then if [[ ":$LD_LIBRARY_PATH:" != *":$path:"* ]]; then LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$path" fi else echo "[WARNING] Library path not found: $path" >&2 fi done export LD_LIBRARY_PATH
09-05
先展示下效果 https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值