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

简介: 麒麟部署平台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月前
|
运维 Java Shell
Linux非常详细的shell运维脚本一键启动停止状态SpringBoot打成可运行jar包
Linux非常详细的shell运维脚本一键启动停止状态SpringBoot打成可运行jar包
336 0
|
15天前
|
监控 安全
公司用什么软件监控电脑:Lua 脚本在监控软件扩展功能的应用
在企业环境中,电脑监控软件对保障信息安全、提升效率至关重要。Lua 脚本在此类软件中用于扩展功能,如收集系统信息、监控软件使用时长及文件操作,向指定服务器发送数据,支持企业管理和运营。
30 6
|
4月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
73 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
7月前
|
存储 Oracle Unix
TSM服务器日常维护简明手册--TSM启动和停止
TSM服务器日常维护简明手册--TSM启动和停止
194 0
|
安全 Linux 程序员
一招解决开发环境问题——远程容器开发指南
使用C++作为主要开发语言的程序猿们应该会认同搭建开发环境是一件烦人的事情。笔者在运营iLogtail开源社区的过程中发现开发和调试环境问题也是成员问的最多的问题之一。利用 VSCode 的 Remote-Development 插件可以使整个开发环境运行在远程容器中,利用容器技术做到一致、可移植、天然隔离的环境开发编译。本文由浅到深带大家搭建这样的远端容器开发环境。
1879 0
|
消息中间件 NoSQL 前端开发
应用系统服务安装全过程(从基础搭建框架到部署运行)
应用系统服务安装全过程(从基础搭建框架到部署运行)
250 0
应用系统服务安装全过程(从基础搭建框架到部署运行)
|
存储 小程序 Shell
【平台开发】技术整合思考(一)——启动配置
【平台开发】技术整合思考(一)——启动配置
117 0
|
Linux
全网独家:LINUX登录桌面后,如何自动运行自己的应用程序
全网独家:LINUX登录桌面后,如何自动运行自己的应用程序
220 0
|
Shell Linux BI
Linux基础服务巡检脚本模板
Linux基础服务巡检脚本模板 收集的一个没有自动化巡检工具的时候,的每日巡检工具, 测试了支持Redhat, Ubuntu能用,单少部分部分命令出错。 结果能看。
2180 0
|
监控 JavaScript 应用服务中间件
C# WinForm 开发配置文件更新/EXE应用启动及监控检测工具
使用C# WinForm 开发快速更新配置文件切换环境以及启动外部EXE应用并进行监控的windows桌面EXE应用