#!/bin/bash
remote_user="***"
登录服务器的用户名
remote_ip="10.*** "
登录服务器
jar_file="1.jar"
要打的jar包
local_path="1/target"
jar包的位置
remote_path="/home/java "
jar包打下来放的位置
release_path="$remote_path"
backup_path="$remote_path/backup"
JAVA_PATH="/usr/java/jdk-11.0.2/bin"
Java环境
APP_PARAM="--spring.profiles.active=uat"
Jar包启动命令
ssh $remote_user@$remote_ip "ps -ef | grep $jar_file | grep -v grep | cut -c 9-15 | xargs kill -9"
ssh $remote_user@$remote_ip:远程登录linux环境
ps -ef | grep $jar_file:输入命令,查找某个jar包是否启动
grep -v grep:过滤掉自己执行的grep ,grep -v 是反向查找的意思,比如 grep -v grep 就是查找不含有 grep 字段的行
-c
: 提取指定的字符,可以是以逗号分隔的数字的列表,也可以是以连字符分隔的数字的范围。
cut -c 9-15:是截取上面输出的结果中的进程号,9-15正好是进程号
xargs kill -9:xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数
if [ $? -eq 0 ]; then
if [ $? -eq 0 ] 语句作用:判断命令是否执行成功
ssh $remote_user@$remote_ip "mv $release_path/$jar_file $backup_path/$jar_file.`date +%Y-%m-%d-%k-%M`"
如果命令执行成功,复制jar包到backup_path
fi
if [ $? -eq 0 ]; then
scp $local_path/$jar_file $remote_user@$remote_ip:$release_path/
fi
scp: 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。,jar从target上拷贝到服务器的release_path
if [ $? -eq 0 ]; then
ssh $remote_user@$remote_ip "cd $release_path ; $JAVA_PATH/java -jar $jar_file $APP_PARAM > $remote_path/letter_job.log 2>&1 &"
fi
切换到release_path,启动jar包
java -jar 1.jar --spring.profiles.active=uat &>job.log 2>&1 &
输出错误信息到提示符窗口
1 表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件
if [ $? = 0 ]; then
sleep 30
ssh $remote_user@$remote_ip "tail -n 50 $remote_path/out.log"
fi
程序休眠30s后查看日志