本文主要是介绍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 一个简单的服务部署启动重启检查和保活脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!