博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell脚本练练手
阅读量:6360 次
发布时间:2019-06-23

本文共 3043 字,大约阅读时间需要 10 分钟。

hot3.png

每次在JBOSS发布ear包的时候,都需要敲一堆命令来完成。通过shell脚步,把所需的命令整合在一起,减少了工作量,同时也减少步骤出错(如:忘了把老的ear包备份)。

下面的Shell脚本完成了:杀进程、备份、发布和启动。

如:在linux服务器下,/usr1/demo.ear是新的ear包,/usr1/jbosshome 是jboss的目录,/usr1/earbak是ear包备份的路径。启动时,输入ingling

#!/bin/bash#create by thd,use for auto publish jboss application#sourceEarPath: the new ear package path#jbosshome: the jboss root path#backupDir: use to backup old ear package #earPackName: the ear package name in jboss_home/server/default/deploysrc=""dest=""backup=""filename=""datestr=`date +"%Y%m%d"`if [ $# -ne 4 ]; then	echo "Parameters: sourceEarPath jbosshome backupDir earPackName"	exit 1else	src="$1"	dest="$2"	backup="$3"	filename="$4"	ear=`echo "$filename" | cut -d "." -f2`	if [ "$ear" != "ear" ]; then		echo "earPackName suffix is $ear, must be 'ear' "		exit 1	fifiecho "sourceEarPath=$src"echo "JBOSS_HOME=$dest"echo "backupDIR=$backup"echo "filename=$filename"if [ -f "$src/$filename" ]; then	echo ""else	echo "File not exits:$src/$filename"	exit 1fi#EAR包是否在JBOSS的deploy目录if [ -f "$dest/server/default/deploy/$filename" ]; then	echo ""else	choice="n"	echo "File not exists:$dest/server/default/deploy/$filename,continue?(y|n):"	read choice	case $choice in 	'n'|'N')		exit 1;;	esac				fi#确定备份的ear包名称tmpfilename="${filename%%.ear*}"if [ -f "$backup/$tmpfilename$datestr.ear" ]; then	k=0	while [ -f "$backup/$tmpfilename$datestr-$k.ear"  ]	do		let k=$k+1	done 	datestr="$datestr-$k"fiecho "Backup to : $backup/$tmpfilename$datestr.ear"#找出需要kill的JBOSS进程PID,通过awk查找PPID不为0的PID,同时需要过滤grep的进程#find the pid of jboss which is going to be killedprocess=`ps -ef | grep jboss |grep -v $0 | grep -v grep| awk 'BEGIN{a=0;}{if($3!=1) {a=$2;}else{a=0;} }END{printf("%d",a);}' `#循环等待killif [ "$process" != "0" ]; then	echo "killing $process"	kill $process	t=0	i=0	while [ $process -gt 0  ]	do		#kill the process and wait for a moment		sleep 1		#if the process of jboss is not be killed		process=`ps -ef | grep jboss |grep -v $0 | grep -v grep| wc -l `		let i=$i+1		echo "$i s"		#如果40秒还kill不了,就加上-9了		if [ $i -gt 40 ]; then			if [ $t -eq 0 ]; then				echo "Kill $process was failed(lasted 40 seconds),try kill forced."				kill -9 $process				i=20				t=1			else				echo "kill was failed,exit"				exit 1			fi		fi	done				#backup the EAR package in jboss 	echo "cp $dest/server/default/deploy/$filename to  $backup/$tmpfilename$datestr.ear"	cp $dest/server/default/deploy/$filename $backup/$tmpfilename$datestr.ear	#copy new EAR package to jboss	echo "copy $src/$filename to $dest/server/default/deploy/$filename"	cp -f $src/$filename $dest/server/default/deploy/$filename	#clear the tmp folder	echo "cleaning $dest/server/default/tmp/*"	rm -rf $dest/server/default/tmp/*		#clear the work folder	echo "cleaning $dest/server/default/work/*"	rm -rf $dest/server/default/work/*	#start jboss	echo "starting server"	cd $dest/bin	nohup sh $dest/bin/run.sh -c default  1>>$dest/bin/logs/start.log 2>&1 &	sleep 10	tail -f $dest/bin/logs/start.logelse	echo "Can't find the jboss PID"	exit 1fi exit 0

转载于:https://my.oschina.net/hand515/blog/110354

你可能感兴趣的文章
ios 高德地图加载瓦片地图_OpenLayers加载谷歌地球离线瓦片地图
查看>>
ini文件中文乱码 python_用心盘Python:中文文件处理早晚会用到的将中文转成拼音...
查看>>
台式电脑主板插线步骤图_主板电池怎么放电?电脑主板电池放电的方法
查看>>
mft文件记录属性头包括_学懂主流NTFS分区文件系统,你也可以成为MM眼中的大神!...
查看>>
怎么做应力应变曲线_做了这么多年材料,这些力学性能测试你做对了吗?
查看>>
pvrect r语言 聚类_技术贴 | R语言——肠型分析:介绍、方法
查看>>
正面管教之PHP_主题体验活动之亲密关系
查看>>
iservice封装有哪些方法_Java基础之类与对象、封装、构造方法·6(重点)
查看>>
redis技术分享ppt_一线互联网架构师技术分享:基于redis的分布式锁实现
查看>>
rap2检测哪些接口在使用_使用四合一气体检测仪应注意哪些方面?-逸云天
查看>>
android垂直排列元素_元素的视图属性之client
查看>>
模型算法_详解SVM模型之SMO算法
查看>>
动态文本_(302期)【动态】|| 立足相同文本,描绘不同风景 ——工作室开展“同课异构”活动...
查看>>
2fsk调制解调原理框图_数字调制解调输出什么 数字调制解调输出特点介绍【图文】...
查看>>
查看mysql某人执行了什么语句_一条 SQL 语句是如何在 MySQL 中执行的
查看>>
r 选取从小到大的数据_r 选取数据库
查看>>
geant4构造粒子_Geant4 基础5——Geant4粒子源
查看>>
python 论文插图_插图论文
查看>>
es6 混合commjs_前端模块化——CommonJS、ES6规范
查看>>
6379端口恶意扫描_DNS重绑定的利用:端口扫描与绕过同源策略
查看>>