自动化部署的时候经常需要写一堆的shell,这里放一些我整理出来比较公用的脚本。
1.根据端口kill掉进程(使用于大部分的关闭指令)
port=8766 #根据端口号查询对应的pid pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
#杀掉对应的进程,如果pid不存在,则不执行
if [ -n "$pid" ]; then
kill -9 $pid;
fi
2.循环遍历文件夹并取出某种类型的文件
比方说现在有一个文件夹a,需要遍历拿到这个文件夹下面所有的jar
#用于遍历文件夹的函数 function read_dir(){ for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令 do if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错 then read_dir $1"/"$file else echo $1"/"$file if [[ $1"/"$file =~ .jar$ ]];then #把这里的.jar换成.zip就能拿出所有以zip结尾的压缩包,以此类推 mv -f $1"/"$file ${WORKSPACE}/jars fi fi done } #调用遍历函数,直接遍历文件夹 read_dir 目录
3.替换jar包里面的文件
很多时候我们需要替换到jar包里面的一些东西,比方说最经典的application.yml, 下面的$1就是调用函数输入的第一个参数,比方说下面的*-1.0-SNAPSHOT.jar
CONF_SOURCE=你的存放将要替换的application.yml的路径
function replace_conf(){ jar -xvf $1 BOOT-INF/classes/application.yml cp $CONF_SOURCE/application.yml BOOT-INF/classes/application.yml jar uvf $1 BOOT-INF/classes/application.yml } #调用更换配置函数 replace_conf *-1.0-SNAPSHOT.jar
4.强制复制替换
这个命令我不止一次写成/cp
cp