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

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删