1. 重启应用脚本
#!/bin/bash
java_path="/lxserver/env/jdk/8/bin/java"
deploy_path="/lxserver/project/backend/${1}"
env_config="--spring.profiles.active=product"
package_name="lxzl-${1}.jar"
jvm="-server -Xms2g -Xmx2g -Xmn1g -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M \
-XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC \
-XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection \
-XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M \
-XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 \
-XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails \
-XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC"
#if [ $1 -ne "ams-dingding" -o $1 -ne "analytics" -o $1 -ne "bank" -o \
$1 -ne "file-preview" -o $1 -ne "mall-app" -o $1 -ne "worker" ];then
# echo "参数错误,请执行:ansible-playbook bank_app.yml \
-e project=\"ams-dingding | analytics | bank | file-preview | mall-app | worker\" -v"
# exit
#fi
if [ $1 == "ams-dingding" -o $1 == "analytics" -o $1 == "bank" -o \
$1 == "file-preview" -o $1 == "mall-app" -o $1 == "worker" ];then
break
else
echo "参数错误,请执行:ansible-playbook bank_app.yml -e \
project=\"ams-dingding | analytics | bank | file-preview | mall-app | worker\" -v"
exit
fi
start_cmd="${java_path} ${jvm} -jar ${deploy_path}/${package_name} ${env_config}"
PID=`ps -ef | grep ${deploy_path}/${package_name} | grep -v grep | awk '{print $2}'`
# 停止应用
if [[ ! -n "$PID" ]];then
echo "进程不存在"
else
# 停止服务
kill -9 ${PID}
sleep 5
process_couunt=$(/usr/bin/ps -ef | grep "${deploy_path}/${package_name}" | grep -v grep | wc -l)
if [[ ${process_couunt} != 0 ]];then
error_message="旧版本服务停止失败"
fi
fi
sleep 3
# 启动应用
# ams-dingding analytics bank file-preview mall-app
if [ $1 == "ams-dingding" -o $1 == "analytics" -o $1 == "bank" ];then
${start_cmd} > /dev/null 2>&1 &
if [[ $? == 0 ]];then
sleep 5
pid=`ps -ef | grep "${deploy_path}/${package_name}" | grep -v grep | awk '{print $2}'`
if [ ! -n "$pid" ];then
echo "启动失败"
else
echo "${pid}"
fi
fi
elif [ $1 == "mall-app" -o $1 == "worker" ];then
sh /lxserver/project/backend/${1}/bin/startup.sh
if [[ $? == 0 ]];then
sleep 5
pid=`ps -ef | grep "${1}" | grep -v grep | awk '{print $2}'`
if [ ! -n "$pid" ];then
echo "启动失败"
else
echo "${pid}"
fi
fi
elif [ $1 == "file-preview" ];then
sh /lxserver/project/backend/${1}/bin/startup.sh
if [[ $? == 0 ]];then
sleep 5
pid=`ps -ef | grep "${1}" | grep -v grep | awk '{print $2}'`
if [ ! -n "$pid" ];then
echo "启动失败"
else
echo "${pid}"
fi
fi
else
exit
fi
2. main.yml
- name: copy script
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: "{{ item.mode }}"
with_items:
- { src: 'restart.sh', dest: '/tmp', mode: '0644' }
- name: sh restart
command: "nohup sh /tmp/restart.sh {{project}}" # 就是这个nohup要加
3. 执行yml
---
- name: init server
remote_user: lxops
become: yes
become_method: sudo
become_user: root
hosts: BANK
roles:
- bank
ansible-playbook bank_app.yml -e project=analytics -v
![]()