设置宝塔面板计划任务按秒数执行Shell脚本

学习 · 2023-08-11

用到一个定时任务功能,但宝塔最低执行周期只有1分钟,然而我需要用到最小3秒来执行,于是就有了下面的方法,当然我是在网上搜索后,自己稍加改动来实现的。

添加计划任务,任务类型选择”Shell脚本”,执行周期选择N分钟,分钟值可以临时填写个1分钟。

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
step=5 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
要执行的shell代码可以放入这里
sleep $step
done
exit 0

上面是Linux的方式,要是Windows的话,则只能使用下面的方法了

使用批处理文件来进行循环执行,新建一个bat格式的批处理文件,然后参考以下的代码进行修改,以达到每5秒进行请求网站。

@echo off
:start
这里是要执行的代码
timeout /t 5 >nul
goto start

下面是设置每3分钟进行文件修改时间的检查,如果与现行时间间隔10秒没更新,则需要重新启动服务

#!/bin/bash
cd 要进入的目录

timestamp=$(date +%s)
filetimestamp=$(stat -c %Y whazzup.txt)
 
#echo $timestamp
#echo $filetimestamp
#echo $[$timestamp - $filetimestamp]
#设置需要比对的秒 10秒
if [ $[$timestamp - $filetimestamp] -lt 10 ];
then
#echo 差值小于10正常
echo 服务运行正常
else 
echo 差值大于10秒,判定服务下线,需要重启
要执行的sh脚本或者其他
echo 服务异常,执行服务重启
fi