Shell 一个简单的服务部署启动重启检查和保活脚本

2023-12-25 22:58

本文主要是介绍Shell 一个简单的服务部署启动重启检查和保活脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

起初为了写一个守护进程,定时监控软件死活,其核心在于使用ps 命令加上字符串过滤命令判断进程是否还存活。有了这个基础就能顺便写一个较为通用的服务部署脚本

第一个脚本,用户定时任务保活

demo1.sh

#!/bin/bash
App="/www/wwwroot/main -env=live"
file_name="/root/selfman/corn.log"  #重启脚本的日志
pid=0
proc_num() {num=`ps -ef | grep "$App" | grep -v grep | wc -l`return $num 
}
proc_id(){  pid=`ps -ef | grep "$App" | grep -v grep | awk '{print $2}'`  
} 
proc_num  #执行proc_num(),获取进程数
number=$?  #获取上一函数返回值
if [ $number -eq 0 ]  #如果没有该进程,则重启
then$App  #启动程序的命令proc_id echo ${pid}, `date` >> $file_name  #把重启的进程号、时间 写入日志
fi

创建一个cron作业
task.cron

*/1 * * * * /root/demo1.sh

启动定时任务

crontab /root/task.cron

第二个脚本为部署脚本

其中的deploy函数,需要自行按需修改, App 命令也需要修改

deploy.sh

#!/bin/bash# 启动你的服务的命令,确保其实阻塞的,能通过其PID kill掉
App="/www/wwwroot/main -env=live"echo "cmd is:"
echo $1
echo "app is:"
echo $Appfunction killProsess() {# 获取进程 PIDPID=$(ps -ef | grep "$App" | grep -v grep | awk '{print $2}')echo "PID: $PID"# 杀死进程kill $PID
}function start() {echo "start"echo "----------------"nohup $App >>log/info.log&echo "started"
}function stop() {echo "stop"echo "----------------"echo $App | killProsess 
}function restart() {echo "restart"echo "----------------"stopstart
}# deploy 包括停止应用,编译,部署,和启动
function deploy() {echo "deploy"echo "----------------"stopecho "----------------"echo "remove old"rm /www/wwwroot/mainecho "----------------"echo "building"go build -mod=vendor main.goecho "----------------"echo "deploying"cp ./main /www/wwwroot/mainecho "----------------"start
}function status() {ps -ef | grep "$App" | grep -v grep
}case "$1" instart )echo "****************"startecho "****************";;stop )echo "****************"stopecho "****************";;restart )echo "****************"restartecho "****************";;deploy )echo "****************"deployecho "****************";;status )echo "****************"statusecho "****************";;* )echo ""echo "no command"echo "example: deploy.sh start"echo "cmd can be: start/stop/restart/deploy/status"echo ""echo "";;
esac

执行示例

chmod +x ./deoply.sh
./deploy.sh status

这篇关于Shell 一个简单的服务部署启动重启检查和保活脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537263

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直