Linux服务器服务宕机自启动脚本

本文介绍了如何编写一个检查服务是否运行的脚本,特别是在服务因服务器重启而停止时自动启动服务。以nginx为例,通过`ps-ef`命令检查进程状态,然后使用`crontab`设置定时任务,确保每隔15分钟检查一次服务并根据需要重新启动。此外,脚本还会记录启动时间并在需要时延迟启动其他服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务自启动脚本编写与Linux定时任务添加


由于服务器断电或者其他原因重启后,部署在服务器中服务停止运行,这时候需要手动执行服务运行命令,这项工作简单但又繁琐,因此编写一个脚本,让其定时监测服务运行状态,当服务停止时执行服务运行命令。

服务自启动脚本编写

#首先判断服务是否正在运行,以nginx为例子来说明
#使用命令可以查看目前运行的服务,“ps -ef | grep "nginx" | grep -v "grep"”
#显示nginx目前有两个进程,
…… master process ./nginx
…… worker process
#其中./nginx是前端运行的nginx代理,因此需要确定的是这个进程是否运行中即
ps -ef | grep "./nginx" | grep -v "grep"
#后续中只需判断进程的个数即可,则使用下面命令
ps -ef | grep "./nginx" | grep -v "grep" | wc -l

具体脚本如下:

#使用vim test.sh创建文件
#脚本内容如下:
#获取./nginx 进程个数
nginx_count=$(ps -ef | grep "./nginx" | grep -v "grep" | wc -l)
#获取服务器当前时间
time=`date + %Y%m%d-%H%M`
#判断进程个数是否等于0,若等于0则执行启动命令
if [ $nginx_count -eq 0]
then
		cd /usr/local/nginx/sbin
		./nginx
		#将启动时间写进脚本同文件夹的log.txt中
		echo "start nginx - $time" >> log.txt
		#睡眠5秒,这里可能在其他服务上用到,启动一些基础服务,待完全启动之后,再启动java等服务
		sleep 5
fi

为文件赋权限

chmod +x test.sh
#可以先把./nginx的进程杀掉,在执行一下脚本,看下是否起作用

添加定时任务

# 设置定时任务,输入命令之后会进入一个文本编辑页面,输入自己的定时任务设置保存即可。
crontab -e
#分、时、日、月、周;这里设置的是每15分钟执行一次脚本
15 * * * * /test.sh
#重启定时任务设置
systemctl restart crond
#查看已设置的定时任务
crontab -l

之后,当服务器重启之后,定时任务就会执行脚本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值