linux设置应用开机自启(通用:mysql、jar、nginx、solr...)
1. 业务场景
用于单机生产环境,防止服务器断电或者强制重启导致的服务下线。
2. 实现方案
- 对于无状态服务,可容器部署设置
restart: always,systemctl eable docker - 对于有状态服务,可编写自启脚本,如下
- ① 编写执行脚本
#!/bin/bash
APP_NAME=saveName
PROG_NAME=$0
ACTION=$1
APP_START_TIMEOUT=20 # 等待应用启动的时间
APP_PORT=81 # 应用端口
HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT} # 应用健康检查URL
APP_HOME=$(pwd) # 从package.tgz中解压出来的jar包放到这个目录下
HEALTH_CHECK_FILE_DIR=${APP_HOME}/status # 脚本会在这个目录下生成nginx-status文件
JAR_NAME=${APP_HOME}/app.jar # jar包的名字
JAVA_OUT=/dev/null #应用的启动日志
JAVA_HOME=${APP_HOME}/jdk-11.0.16
# 创建出相关目录
mkdir -p ${HEALTH_CHECK_FILE_DIR}
#mkdir -p ${APP_HOME}
usage() {echo "Usage: $PROG_NAME {start|stop|restart|init|jdk_install}"exit 2
}
jdk_install() {tar zxvf ${APP_HOME}/jdk-11.0.16_linux-x64_bin.tar.gztee -a /etc/profile << EOFexport JAVA_HOME=${APP_HOME}/jdk-11.0.16export PATH=${APP_HOME}/jdk-11.0.16/bin:\$PATHexport CLASS_PATH=${APP_HOME}/jdk-11.0.16/lib
EOFecho "如没有jdk日志,请手动执行:source /etc/profile &java -version"source /etc/profilejava -version
}
health_check() {exptime=0echo "checking ${HEALTH_CHECK_URL}"while truedostatus_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code} ${HEALTH_CHECK_URL}`if [ "$?" != "0" ]; thenecho -n -e "\rapplication not started"elseecho "code is $status_code"if [ "$status_code" == "401" ];thenbreakfifisleep 5((exptime++))echo -e "\rWait app to pass health check: $exptime..."if [ $exptime -gt ${APP_START_TIMEOUT} ]; thenecho 'app start failed'exit 1fidoneecho "check ${HEALTH_CHECK_URL} success"
}
start_application() {echo "starting java process"echo "nohup java -jar ${JAR_NAME} --spring.profiles.active=${env} > ${JAVA_OUT} 2>&1 &"nohup java -jar ${JAR_NAME} --spring.profiles.active=${env} > ${JAVA_OUT} 2>&1 &echo "started java process"
}stop_application() {checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`if [[ ! $checkjavapid ]];thenecho -e "\rno java process"returnfiecho "stop java process"times=60for e in $(seq 60)dosleep 1COSTTIME=$(($times - $e ))checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`if [[ $checkjavapid ]];thenkill -9 $checkjavapidecho -e "\r -- stopping java lasts `expr $COSTTIME` seconds."elseecho -e "\rjava process has exited"break;fidoneecho ""
}
start() {start_applicationhealth_check
}
stop() {stop_application
}
case "$ACTION" instart)start;;stop)stop;;restart)stopstart;;jdk_install)jdk_install;;*)usage;;
esac
- ① 编写自启脚本
#!/bin/sh
# chkconfig: 2345 20 20
# clear file
base=baseArg
serveStart() {echo "正在启动Solr"cd baseArg/servesh baseArg/serve/deploy.sh start
}
serveStart
- ② 注册自启脚本至linux开启自动调用目录
ACTION=$1
usage() {echo "Usage: $PROG_NAME {init|stopAll}"exit 2
}
stopAll(){
checkjavapid=`ps -ef | grep $serveName| awk '{print$2}'`
kill -9 $checkjavapid
}
init(){
base=$(pwd)
sed -i "s|baseArg|${base}|g" $base/autoSave.sh
chmod 777 $base/autoSave.sh
rm -rf /etc/init.d/autoSave.sh
cp -rf $base/autoSave.sh /etc/init.d/autoSave.sh
chmod 777 /etc/init.d/autoSave.sh
chkconfig --add autoSave.sh
chkconfig autoSave.sh on
chkconfig --list
}
case "$ACTION" ininit)init;;stopAll)stopAll;;*)usage;;
esac相关文章:
linux设置应用开机自启(通用:mysql、jar、nginx、solr...)
1. 业务场景 用于单机生产环境,防止服务器断电或者强制重启导致的服务下线。 2. 实现方案 对于无状态服务,可容器部署设置 restart: always,systemctl eable docker对于有状态服务,可编写自启脚本,如下 ① 编写执行…...
Offset Explorer(Kafka消息可视化工具)报invalid hex digit ‘{‘错误解决方法
解决办法: 根据代码的实际情况,设置成对应的值。设置完成后点update、refresh更新。...
深度学习:模型训练过程中Trying to backward through the graph a second time解决方案
1 问题描述 在训练lstm网络过程中出现如下错误: Traceback (most recent call last):File "D:\code\lstm_emotion_analyse\text_analyse.py", line 82, in <module>loss.backward()File "C:\Users\lishu\anaconda3\envs\pt2\lib\site-packag…...
【数值计算方法】非线性方程(组)和最优化问题的计算方法:非线性方程式求根的二分法、迭代法、Newton 迭代法及其Python实现
目录 一、非线性方程式求根 1、二分法(Bisection Method、对分法) a. 理论简介 b. python实现 2、迭代法(Iterative Method) a. 理论简介 b. python实现 3、Newton 迭代法(Newtons Method) a. 理论…...
linux主机名
title: linux主机名 createTime: 2020-10-29 18:05:52 updateTime: 2020-10-29 18:05:52 categories: linux tags: Linux系统的主机名 查询主机名 hostnamehostnamectl 修改主机名 hostnamectl set-hostname <newhostname>...
前端uniapp图片select联动文本切换
图片 代码 <template><!-- 这个是uniapp的下拉框 --><uni-data-select v-model"pay_type" :localdata"range" change"handleSelectChange"></uni-data-select><!-- 图片 --><image :src"dynamicImage&qu…...
java - 包装类
目录 前言 一 什么是包装类? 1.获取包装类的两种方式(了解)(已经淘汰) 2.两种方式获取对象的区别(掌握) 3.自动装箱&&自动装箱 4.Integer常用方法 总结 前言 大家好,今天给大家讲解一下包装类 一 什么是包装类? 在Java中,每个基本数据类型都有对应…...
防火墙基础
目录 1、 防火墙支持那些NAT技术,主要应用场景是什么? 2、当内网PC通过公网域名解析访问内网服务器时,会存在什么问题,如何解决? 3、防火墙使用VRRP实现双机热备时会遇到什么问题,如何解决? 4…...
服务断路器_Resilience4j的断路器
断路器(CircuitBreaker)相对于前面几个熔断机制更复杂,CircuitBreaker通常存在三种状态(CLOSE、OPEN、HALF_OPEN),并通过一个时间或数量窗口来记录当前的请求成功率或慢速率,从而根据这些指标来…...
微信小程序学习笔记3.0
第3章 资讯类:仿今日头条微信小程序 3.1 需求描述及交互分析 需求描述 仿今日头条微信小程序,要具有以下功能。 (1)首页新闻频道框架设计,包括底部标签导航设计、新闻检索框设计及新闻频道滑动效果设计。 (2)首页新闻内容设计,包括新闻标题、新闻图片及新闻评论设计…...
nginx 反向代理 负载均衡 动静分离
一样东西的诞生通常都是为了解决某些问题,对于 Nginx 而言,也是如此。 比如,你出于无聊写了一个小网站,部署到 tomcat 之后可以正常访问 但是后来,你的这个小网站因为内容很诱人逐步的火了,用户越来越多&a…...
Codeanalysis(tca)后端二次开发环境搭建
先试用官方脚本文件件quick_install.sh将整个项目启动起来,然后到每个微服务下查看每个服务的pid进程,需要调试哪个先把对应的微服务关闭手动启动,具体启动流程如下: cd 到项目根目录下 source script\config.sh # 激活系统环境…...
JS前端树形Tree数据结构使用
前端开发中会经常用到树形结构数据,如多级菜单、商品的多级分类等。数据库的设计和存储都是扁平结构,就会用到各种Tree树结构的转换操作,本文就尝试全面总结一下。 如下示例数据,关键字段id为唯一标识,pid为父级id&am…...
Automation Anywhere推出新的生成式AI自动化平台,加速提高企业生产力
在9 月 19 日的Imagine 2023 大会上,智能自动化领域的领导者 Automation Anywhere 宣布对其自动化平台进行扩展。推出了新的 Responsible AI Layer,并宣布了四项关键产品更新,包括全新的 Autopilot,它可以利用生成式 AI ÿ…...
电缆隧道在线监测系统:提升电力设施安全与效率的关键
随着城市化进程的加快,电力电缆隧道在保障城市电力供应方面的地位日益重要。然而,电缆隧道环境复杂,容易受到多种因素影响,如温度、湿度、烟雾、水位等,严重威胁电力设施的安全与稳定运行。在此背景下,电缆…...
Java BigDecimal 详解
目录 一、BigDecimal 1、简介 2、构造器描述 3、方法描述 4、使用 一、BigDecimal float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它…...
简述信息论与采样定理
信息论 香农信息论发表于1948/1949年,它由三部分组成:信号采样、信源编码、信道编码; 信号采样:采样理论研究在何种条件下对连续信号进行采样,从而得到的离散型号可以可逆地恢复出采样前的连续信号。采样得到的离散实…...
网络安全之网站常见的攻击方式
这是作者自学的哈,不算课程内容。 网页中出现大量黑链 网站看着很正常,但是会隐藏一些链接。网页的链接几乎都是标签,这种黑链就是通过链接标签<a></a>或者script在里面链入恶意脚本,等待浏览者的访问,通…...
iOS Swift 拍照识别数字(Recognizing Text in Images)
可以用腾讯云 OCR的iOS demo - 腾讯云 苹果官方的解决方案(识别度太低) Recognizing Text in Images - apple developer Extracting phone numbers from text in images(Sample Code) - apple developer import UIKit import Visionclass ViewContro…...
数学建模:智能优化算法及其python实现
数学建模:智能优化算法及其python实现 智能优化算法简介差分进化算法(Differential Evolution,DE)遗传算法(Genetic Algorithm,GA)粒子群优化算法(Particle Swarm Optimization,PSO)模拟退火算法(Simulated Annealing,SA)蚁群算法(Ant Colony Optimization,ACO)…...
面试官:什么是最左前缀匹配?为什么要遵守?(修订版)
在线 Java 面试刷题(持续更新):https://www.quanxiaoha.com/java-interview面试考察点原理理解:面试官不仅仅想知道你会背 "最左前缀原则",更想考察你是否理解联合索引的 B 树存储结构,能否从数据…...
24小时运行不中断:OpenClaw+GLM-4.7-Flash构建个人资讯聚合器
24小时运行不中断:OpenClawGLM-4.7-Flash构建个人资讯聚合器 1. 为什么需要个人资讯聚合器 每天早上打开手机,总会被各种新闻推送淹没。财经、科技、行业动态...信息过载已经成为现代人的通病。作为一个技术从业者,我发现自己花费在筛选有效…...
技术速递|底层机制:GitHub Agentic Workflows 的安全架构
作者:Landon Cox & Jiaxiao Zhou排版:Alan WangGitHub Agentic Workflows 构建于隔离、受限输出以及全面日志记录之上。了解我们的威胁模型和安全架构如何帮助团队在 GitHub Actions 中安全运行智能体。无论你是开源维护者还是企业团队的一员&#x…...
OpenClaw模型微调:基于nanobot镜像的Qwen3-4B定制
OpenClaw模型微调:基于nanobot镜像的Qwen3-4B定制 1. 为什么需要定制化OpenClaw模型 去年夏天,当我第一次尝试用OpenClaw自动处理团队周报时,发现通用模型对"技术复盘"这类专业内容的处理总差那么点意思。它会机械地罗列Git提交记…...
YOLO12工业质检场景应用:快速部署检测模型,助力产品缺陷识别
YOLO12工业质检场景应用:快速部署检测模型,助力产品缺陷识别 1. 工业质检的痛点与YOLO12解决方案 在制造业生产线上,产品缺陷检测一直是个老大难问题。传统的人工质检方式存在几个明显短板: 效率低下:工人需要肉眼检…...
FireRedASR-AED-L语音搜索应用:电商场景实战
FireRedASR-AED-L语音搜索应用:电商场景实战 1. 引言 想象一下这个场景:一位正在做饭的用户手上沾满面粉,突然想起需要购买烘焙材料,只需对着手机说"帮我找高筋面粉",下一秒就能看到精准的商品搜索结果。这…...
告别命令行恐惧:用乐鑫官方Flash Download Tool图形化烧录ESP32-S3固件(保姆级图文教程)
告别命令行恐惧:乐鑫Flash Download Tool图形化烧录ESP32-S3全指南 第一次接触ESP32开发板时,那个闪烁的命令行窗口让我手足无措。直到发现乐鑫官方的Flash Download Tool,才发现原来固件烧录可以如此直观简单——不需要记忆任何命令参数&…...
别再只用Dice Loss了!结合Focal Loss解决钢材缺陷分割中的小目标难题(附PyTorch代码)
突破小目标分割瓶颈:Focal Loss与Dice Loss的黄金组合实践 在工业质检领域,钢材表面缺陷分割任务常面临两个核心挑战:毫米级点状缺陷的漏检与复杂纹理背景下的误报。传统Dice Loss虽能缓解类别不平衡问题,但当遇到像素占比不足0.1…...
告别信号盲猜!手把手教你用ESP32的Scan和iperf给家里WiFi做个‘体检’
用ESP32打造家庭WiFi信号检测仪:从扫描到吞吐测试全攻略 你是否遇到过在家追剧时视频卡顿、智能设备频繁掉线的困扰?墙角的摄像头总是连接不稳定,书房里的温湿度传感器数据时有时无——这些问题很可能与WiFi信号覆盖不均有关。今天我们将利用…...
AI改写工具爱毕业aibye提供五个技巧,助力30%重复率的论文快速达标
嘿,大家好!我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题:论文重复率飙到30%以上怎么办?别慌,我这就分享5个实用降重技巧,帮你一次搞定,轻松压到合格线以下。这些方法都是我亲身试验过的&a…...
