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

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

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

ssh-keygen -t rsa

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

cd ~
scp -p .ssh/id_rsa.pub [email protected]:/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/* [email protected]:/data/$projectname/config/
scp -r /data/$projectname/config/* [email protected]:/data/$projectname/config/
scp -r /data/$projectname/config/* [email protected]:/data/$projectname/config/
scp -r /data/$projectname/config/* [email protected]:/data/$projectname/config/
scp -r /data/$projectname/a-app/a-app-v1.0.0.jar.original [email protected]:/data/$projectname/a-app/
scp -r /data/$projectname/a-app/a-app-v1.0.0.jar.original [email protected]:/data/$projectname/a-app/
scp -r /data/$projectname/a-app/a-app-v1.0.0.jar.original [email protected]:/data/$projectname/a-app/
scp -r /data/$projectname/a-app/a-app-v1.0.0.jar.original [email protected]:/data/$projectname/a-app/
scp -r /data/$projectname/a-app/lib/* [email protected]:/data/$projectname/a-app/lib/
scp -r /data/$projectname/a-app/lib/* [email protected]:/data/$projectname/a-app/lib/
scp -r /data/$projectname/a-app/lib/* [email protected]:/data/$projectname/a-app/lib/
scp -r /data/$projectname/a-app/lib/* [email protected]:/data/$projectname/a-app/lib/
#远程启动14服务器服务
echo '重启本地应用服务'
sh /data/$projectname/01startup-app.sh
#远程启动15服务器服务
echo 重启15服务器对应服务
ssh [email protected] > /dev/null 2>&1 <<aabbcc
sh /data/$projectname/01startup-app.sh
sleep 3
exit
aabbcc
echo 15 service startup!
#远程启动16服务器服务
echo '重启16服务器对应服务'
ssh [email protected] > /dev/null 2>&1 <<aabbcc
sh /data/$projectname/01startup-app.sh
sleep 3
exit
aabbcc
echo 16 service startup!
#远程启动20服务器服务
echo 重启20服务器对应服务
ssh [email protected] > /dev/null 2>&1 <<aabbcc
sh /data/$projectname/01startup-app.sh
sleep 3
exit
aabbcc
echo 20 service startup!
#远程启动21服务器服务
echo 重启21服务器对应服务
ssh [email protected] > /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 启动命令自定义改进,包括目录结构,仅提供一个思路。

你可能感兴趣的:(服务器,linux,运维)