前面做了jenkins使用public over ssh插件发布jar包,感觉在做回滚的时候有点慢,所以改进了一下,直接使用shell发布jar包,在使用过程中仍然存在把jar包放到后台执行会一下停留在控制台界面,没法返回成功的问题。后面经过调整,将jar命令写到shell脚本里面,并且输出重定向到nohup.out文件,这样就可以了。具体代码如下L

cat > startup.sh <nohup.out 2>&1 &
eof
chmod a+x startup.sh
BUILD_ID=DONTKILLME
path=/opt/backup/${BUILD_NUMBER} 
NUM=`ssh $host ps -wauxw|grep $project-0.1.jar|grep -v grep|awk '{print $2}'|wc -l`
update(){
scp $project-0.1.jar $host:/home/$jar_home/
ssh $host "[ $NUM -gt 0 ] && ps -wauxw|grep $project-0.1.jar|grep -v grep|awk '{print \$2}'|xargs kill -9||echo 'PID is not exsit!!'"
scp startup.sh $host:/root/ 
ssh $host sh /root/startup.sh
sleep 5

}
case $Status  in
Deploy)
echo "Status:$Status"           
ssh $host "[ -d $path ] && echo "The files is already  exists " ||mkdir -p  $path"
ssh $host cp -rf /home/$jar_home/$project-0.1.jar $path/  
update
;;
Rollback)
echo "Status:$Status"
echo "Version:$Version"
ssh $host cp -rf /opt/backup/$Version/*.jar /home/$jar_home/
ssh $host "[ $NUM -gt 0 ] && ps -wauxw|grep $project-0.1.jar|grep -v grep|awk '{print \$2}'|xargs kill -9"||echo "PID is not exsit!!"
ssh $host "cd /home/$jar_home && nohup  java -jar $project-0.1.jar >nohup.out 2>&1"
;;
)
exit
;;
esac