麒麟部署平台应用启动和停止脚本模板

简介: 麒麟部署平台ISV操作手册

Linux服务器

如果应用运行的目标服务器是Linux环境的,则参考如下脚本示意


应用启动脚本模板

#!/bin/bash#######  单进程软件包安装脚本模版说明  ##########1. 此脚本默认在根路径下执行 Linux系统默认为 /root#2. 脚本安装软件执行成功后 默认会删除远程下载的路径#3. 用户自定义实现 建议在 user_shell 下#4. 需遵循进程ID的存储约束 软件包进程ID标识需存储到指定路径#######  error code specification  ########## Please update this documentation if new error code is added.# 1   => install fail# 2   => check health fail# 3   => record process id fail# 4   => user shell fail# 用户部署物名称&软件包名称 由使用方基于页面填写DEPLOY_NAME="demo"SOFTWARE_NAME="demo-1.0.0-SNAPSHOT.jar"APP_HOME="/etc/aliyun"PROCESS_ID_PATH="${APP_HOME}/main_process_id"user_shell() {
#用户自定义安装脚本 START#软件包会自动拉取到实例 “~” 路径下,脚本成功后软件包会自动删除 #用户自行决定是否需要先把软件包转移位置#此处以jar类型软件包为例,后台进程保持运行cp${SOFTWARE_NAME}${APP_HOME}    nohup java -jar${APP_HOME}/${SOFTWARE_NAME} > /dev/null 2>&1 &
#用户自定义安装脚本 END}
##### 禁止修改##### 可在脚本开始运行时调用,打印当时的时间戳及PID,同时记录软件包进程ID到指定路径。job_start() {
if [[ -e${PROCESS_ID_PATH} ]]; thenstartProcessId=`sed  -n /"${DEPLOY_NAME}:${SOFTWARE_NAME}"/,+1p  ${PROCESS_ID_PATH} | grep -iv [a-z]`kill-9${startProcessId}sed-i /${SOFTWARE_NAME}/,+1d ${PROCESS_ID_PATH}sed-i /${SOFTWARE_NAME}/d ${PROCESS_ID_PATH}echo"old process ${startProcessId} in ${APP_HOME}, killed."fimkdir-p${APP_HOME}    user_shell
if [ $?-ne0 ]; then        exit4 #user shell failfi# 此处约束禁止删除pid=$!echo"process start success in ${APP_HOME}, pid: ${pid}."echo"${DEPLOY_NAME}:${SOFTWARE_NAME}" >> "${PROCESS_ID_PATH}"echo"${pid}" >> "${PROCESS_ID_PATH}"if [ $?-ne0 ]; then        exit3 #record process id failfi}
##### 在此函数中检查服务是否起来,可以是检查进程,curl http地址等方式check_health() {
now=$(date +'%Y-%m-%d %H:%M:%S')#自定义健康检查逻辑result=`curl http://localhost:7001/checkpreload.htm|grep success`if [[ "$result"-eq"" ]]; thenecho"[$now][$$] check_health"else        exit2 #check health failfi}
exit1() {
echo"exit code 1, install fail"exit1}
exit2() {
echo"exit code 2, check health fail"exit2}
exit3() {
echo"exit code 3, record process id fail"exit3}
exit4() {
echo"exit code 4, user shell fail"exit4}
exit5() {
echo"exit code 5, jdk not effect fail"exit5}
##### 如果返回值为0,则认为此执行成功,如果非0,则认为执行失败main() {
    job_start
    check_health
}
##### 触发执行 日志由OOS自动记录main


应用停止脚本模板


#!/bin/bash##### 可在脚本开始运行时调用,打印当时的时间戳及PID。PID_FILE_PATH="/etc/aliyun/main_process_id"DEPLOY_NAME="demo"SOFTWARE_HOME="demo-1.0.0-SNAPSHOT.jar"FLAG=0function job_stop()
{
for line in`cat ${PID_FILE_PATH}`doif [[ ${FLAG}==1 ]]; thenkill-9$lineFLAG=0sed-i /${SOFTWARE_HOME}/,+1d ${PID_FILE_PATH}sed-i /${SOFTWARE_HOME}/d ${PID_FILE_PATH}fiif [[ $line=="${DEPLOY_NAME}:${SOFTWARE_HOME}" ]]; thenFLAG=1fidone}
job_stop




Windows服务器

如果应用运行的目标服务器是Windows环境的,则参考如下脚本示意

@echooffREM####### 单进程软件包安装脚本模版说明 #######REM1.windowsC:\Users\AdministratorREM2.user_shellREM3.IDIDREM##### 如果返回值为0,则认为此执行成功,如果非0,则认为执行失败call:mainexit/b%ERRORLEVEL%REM##### 触发执行 日志由OOS自动记录REM############### 用户可修改区域 开始 ###############REM使[!!!!]:user_confSETDEPLOY_NAME=SETSOFTWARE_NAME=REM/y/nSETRETURN=ygoto:eofREMREMC:\Windows\system32REM:user_shellechoREM/y/nSETRETURN=ngoto:eofREM##### 在此函数中检查服务是否起来,可以是检查进程,curl http地址等方式:check_healthREM/y/nSETRETURN=ygoto:eofREM############### 用户可修改区域 结束 ###############REM############### 以下内容禁止修改 ###############REM1=>installfailREM2=>checkhealthfailREM3=>recordprocessidfailREM4=>usershellfailREM############### 可在脚本开始运行时调用,打印当时的时间戳及PID,同时记录软件包进程ID到指定路径 ###############:mainSETRETURN=ncall:user_confechouser_conf%RETURN%if%RETURN%==necho"exit code 3, record process id fail"&&exit/b3echo%DEPLOY_NAME%-%SOFTWARE_NAME%-%DATE%-%TIME%>C:\main_process_idcall:user_shellechousershell%RETURN%if%RETURN%==necho"exit code 4, user shell fail"&&exit/b4call:check_healthechocheck_health%RETURN%if%RETURN%==necho"exit code 2, check health fail"&&exit/b2if%RETURN%==yecho"exit code 0, run deploy script success "&&exit/b0goto:eof
相关文章
|
消息中间件 RocketMQ
RocketMQ报错:MQClientException:no route info of this topic的解决
RocketMQ报错:MQClientException:no route info of this topic的解决
820 0
|
Ubuntu Windows
Ubuntu 20.04.2 LTS安装 最新版 微信(wine)
Ubuntu 20.04.2 LTS安装 最新版 微信(wine)
3979 0
Ubuntu 20.04.2 LTS安装 最新版 微信(wine)
|
机器学习/深度学习 人工智能 算法
整合海量公共数据,谷歌开源AI统计学专家DataGemma
【10月更文挑战第28天】谷歌近期开源了DataGemma,一款AI统计学专家工具,旨在帮助用户轻松整合和利用海量公共数据。DataGemma不仅提供便捷的数据访问和处理功能,还具备强大的数据分析能力,支持描述性统计、回归分析和聚类分析等。其开源性质和广泛的数据来源使其成为AI研究和应用的重要工具,有助于加速研究进展和推动数据共享。
377 6
|
SQL 安全 数据库
通义灵码的代码安全增强措施
在数字化时代,软件代码安全至关重要。通义灵码作为一款强大的AI代码生成工具,通过自动参数化查询、输入验证、访问控制等措施,有效防止SQL注入、XSS等常见安全漏洞,同时集成自动代码审查和漏洞扫描功能,确保生成的代码安全可靠。
1539 31
通义灵码的代码安全增强措施
|
机器学习/深度学习 监控 算法框架/工具
使用Python实现深度学习模型:人脸识别与人脸表情分析
【7月更文挑战第18天】 使用Python实现深度学习模型:人脸识别与人脸表情分析
728 2
|
Linux 编译器 Shell
Linux系统下实现QT程序打包发布
Linux系统下实现QT程序打包发布
2486 0
|
算法 架构师 安全
需求分析和常见的需求问题解决
需求分析和常见的需求问题解决
112295 17
|
Linux 异构计算 Docker
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
|
安全 Java PHP
【WEB安全】SMTP注入
漏洞介绍 SMTP是用于发送和传递电子邮件的协议,定义了邮件的传输方式和交流规则。 SMTP注入是指可通过添加/控制 邮件头 的方式,篡改邮件的发送者、抄送、密送等字段,从而达到 欺骗、窃取邮件信息或劫持邮件传递 的目的。 既然归属到注入类,说明也是对用户输入未严格过滤,从而达到非预期的结果。 邮件头介绍 常见邮件头代表的含义如下: 邮件头字段
656 0

热门文章

最新文章