Linux 复制程序包到其他服务器并重启应用脚本

1、设置服务器访问其他服务器免密ssh

操作支持免密访问异地服务器

ssh-keygen -t rsa

默认enter按下去就可以,然后公钥传输到异地服务器,有多台需要复制的就复制到多台服务器,后续使用scp命令即可免密

cd ~
scp -p .ssh/id_rsa.pub root@192.168.0.26:/root/.ssh/authorized_keys

2、编写脚本进行本地备份,自动拷贝到其他服务器,并执行重启命令

#!/bin/bash
projectname=你的文件夹名称
#第一步开始备份
date=$(date +%Y-%m-%d)
echo '正在备份本地文件到文件夹'$projectname"_bak_"$date'预计23秒,请稍候...'
cp -rf /data/$projectname/ /data/$projectname"_bak_"$date

#第二步扩散复制到其他服务器,下面内容请自定义,每个软件需要拷贝的内容都不一样
echo '正在扩散程序包到 15 16 20 21 服务器'
scp -r /data/$projectname/config/* root@192.168.90.15:/data/$projectname/config/
scp -r /data/$projectname/config/* root@192.168.90.16:/data/$projectname/config/
scp -r /data/$projectname/config/* root@192.168.90.20:/data/$projectname/config/
scp -r /data/$projectname/config/* root@192.168.90.21:/data/$projectname/config/
scp -r /data/$projectname/a-app/a-app-v1.0.0.jar.original root@192.168.90.15:/data/$projectname/a-app/
scp -r /data/$projectname/a-app/a-app-v1.0.0.jar.original root@192.168.90.16:/data/$projectname/a-app/
scp -r /data/$projectname/a-app/a-app-v1.0.0.jar.original root@192.168.90.20:/data/$projectname/a-app/
scp -r /data/$projectname/a-app/a-app-v1.0.0.jar.original root@192.168.90.21:/data/$projectname/a-app/
scp -r /data/$projectname/a-app/lib/* root@192.168.90.15:/data/$projectname/a-app/lib/
scp -r /data/$projectname/a-app/lib/* root@192.168.90.16:/data/$projectname/a-app/lib/
scp -r /data/$projectname/a-app/lib/* root@192.168.90.20:/data/$projectname/a-app/lib/
scp -r /data/$projectname/a-app/lib/* root@192.168.90.21:/data/$projectname/a-app/lib/
#远程启动14服务器服务
echo '重启本地应用服务'
sh /data/$projectname/01startup-app.sh
#远程启动15服务器服务
echo 重启15服务器对应服务
ssh root@192.168.90.15 > /dev/null 2>&1 <<aabbcc
sh /data/$projectname/01startup-app.sh
sleep 3
exit
aabbcc
echo 15 service startup!
#远程启动16服务器服务
echo '重启16服务器对应服务'
ssh root@192.168.90.16 > /dev/null 2>&1 <<aabbcc
sh /data/$projectname/01startup-app.sh
sleep 3
exit
aabbcc
echo 16 service startup!
#远程启动20服务器服务
echo 重启20服务器对应服务
ssh root@192.168.90.20 > /dev/null 2>&1 <<aabbcc
sh /data/$projectname/01startup-app.sh
sleep 3
exit
aabbcc
echo 20 service startup!
#远程启动21服务器服务
echo 重启21服务器对应服务
ssh root@192.168.90.21 > /dev/null 2>&1 <<aabbcc
sh /data/$projectname/01startup-app.sh
sleep 3
exit
aabbcc
echo 21 service startup!

3、自动关闭现有java应用并重新启动的启动脚本

一般我们需要自己查找java应用进程 ps -ef|grep xxx kill-9 1111 来结束已经启动的java应用,然后重新启动java应用。下面这个脚本可以自己完成这个过程,只要启动脚本即可完成java应用的重启,配合上面的脚本才能做到多服务器批量自动更新java应用。

01startup-app.sh

#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
arr=`ps -ef | grep a-app-v1.0.0 | grep -v grep | awk '{print $2}'`
echo get pid: ${arr}
for i in ${arr[@]};do
echo kill pid ${i}...
kill -9 ${i}
done;
echo kill finished!
cd ${basepath}
echo start application
nohup java -Xmx150M -Xms150M -jar -Dfile.encoding=UTF-8 -Dloader.path=${basepath}/a-app/lib,${basepath}/a-app/config  ${basepath}/a-app/a-app-v1.0.0.jar.original >/dev/null 2>&1 &
echo start end...

上面的内容a-app-v1.0.0 替换为自己的jar名称,java 启动命令自定义改进,包括目录结构,仅提供一个思路。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值