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

简介: 麒麟部署平台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
目录
相关文章
|
7月前
|
监控 机器人 Shell
用shell脚本编写一个监控应用服务的脚本,外发到微信群
用shell脚本编写一个监控应用服务的脚本,外发到微信群
87 1
|
6月前
|
Ubuntu NoSQL C++
百度搜索:蓝易云【搭建ubuntu容器内C/C++开发调试环境】
以上是搭建 Ubuntu 容器内 C/C++ 开发调试环境的一般教程。你可以根据实际需求进行进一步的定制和配置。请注意,使用容器进行开发调试可以提供一种隔离的环境,但也需要注意容器的资源限制和安全性。建议参考 Docker 官方文档和其他可靠资源,以获取更详细和特定于你的需求的指导。
30 1
|
11月前
|
消息中间件 NoSQL 前端开发
应用系统服务安装全过程(从基础搭建框架到部署运行)
应用系统服务安装全过程(从基础搭建框架到部署运行)
141 0
应用系统服务安装全过程(从基础搭建框架到部署运行)
|
11月前
|
存储 小程序 Shell
【平台开发】技术整合思考(一)——启动配置
【平台开发】技术整合思考(一)——启动配置
80 0
|
Linux
全网独家:LINUX登录桌面后,如何自动运行自己的应用程序
全网独家:LINUX登录桌面后,如何自动运行自己的应用程序
190 0
harmonyOS:Service远程设备启动和停止的演示
紧接着上篇,这次来实现远程设备的Service启动和关闭,打开两个远程设备,写好代码后,开始实操 1.先在第一个设备运行程序,然后选择始终允许
harmonyOS:Service远程设备启动和停止的演示
|
Linux Windows
部署平台停止脚本编写
部署平台停止脚本编写
127 0
|
Shell Linux BI
Linux基础服务巡检脚本模板
Linux基础服务巡检脚本模板 收集的一个没有自动化巡检工具的时候,的每日巡检工具, 测试了支持Redhat, Ubuntu能用,单少部分部分命令出错。 结果能看。
2075 0
|
弹性计算 Ubuntu 测试技术
Dsm as deepin mate(3):离线编辑初始镜像,让skynas本地验证启动安装/升级
本文关键字:啥是真正的黑群,压缩skynas磁盘布局为5G内
429 0
Dsm as deepin mate(3):离线编辑初始镜像,让skynas本地验证启动安装/升级
|
容器
共享容器——URLOS最新发布的一项超强功能
共享容器是指将多个服务(例如网站)放在同一个容器中运行,它们共享同一个运行环境。它区别于URLOS传统的独立容器部署方式,将多个网站放在一个容器中运行,有利于节省主机资源。
400 0
共享容器——URLOS最新发布的一项超强功能