Linux服务进程定时检测脚本 - 使用crontab实现自动重启
Linux服务进程定时检测脚本 - 使用crontab实现自动重启
该脚本可以用于定期检测Linux系统中指定服务的运行状态,并在服务停止时自动重启。
脚本代码:
#!/bin/bash
#服务进程定时检测脚本,配合crontab使用,每分钟执行一次
#* * * * * sh /....../service.sh
#按需修改进程数组(processArray),以及进程检测时间间隔(interval)
#进程数组
#key为进程标识,保证通过ps -ef | grep 'key' | grep -v grep可获取到唯一进程,兼容正则表达式,不可包含空格
#value为启动命令
declare -A processArray=(
['STLservice']='cd /home/tumispider/tumispider/stl2023 && nohup python3 main.py --tries=3 --backoff=10 > /var/log/STLservice.log 2>&1 &
')
#进程检测时间间隔,单位秒
interval=2
#脚本执行开始时间戳
startTimeStamp=$(date +%s)
#检测脚本执行时间,如果超过59秒,则退出脚本,参数为脚本执行开始时间戳
function timeCheck()
{
currTimeStamp=$(date +%s)
exeTime=`expr $currTimeStamp - $1`
echo 'execute time: $exeTime second'
if [ $exeTime -ge 59 ]
then
echo 'done'
exit 0
fi
}
#检测进程是否存在,不存在则启动,第一个参数为进程标识,第二个参数为启动命令
function checkProcess()
{
timeCheck $startTimeStamp
ps -ef | grep -E '$1' | grep -v grep
if [ $? -ne 0 ]
then
echo 'start $1 process'
eval $2
echo -e '\n'
else
echo -e '$1 process is runing\n'
fi
sleep $interval
}
#开始循环检测
while true
do
for key in ${!processArray[@]}
do
checkProcess '$key' '${processArray[$key]}'
done
done
使用方法:
- 将代码保存为名为
service.sh的文件。 - 修改脚本中的
processArray数组,添加您需要检测的进程,以及相应的启动命令。 - 修改
interval变量,设置进程检测的时间间隔,单位为秒。 - 使用
crontab -e命令编辑 crontab 文件,添加如下命令:
* * * * * sh /path/to/service.sh
其中 /path/to/service.sh 为 service.sh 文件的路径。
注意:
- 该脚本需要在 Linux 系统下执行,并且需要使用 Bash 来运行。
- 脚本中需要根据实际情况修改进程数组和进程检测时间间隔等参数。
- 脚本使用了
ps -ef | grep 'key' | grep -v grep命令来获取进程信息,请确保您的进程标识可以通过该命令获取到唯一的进程。 - 如果您在使用过程中遇到问题,请提供更具体的错误信息和环境信息,以便更好地解决问题。
原文地址: https://www.cveoy.top/t/topic/oWt1 著作权归作者所有。请勿转载和采集!