如何让任务每 a-b 分钟执行一次脚本

xiaohantx*/8 * * * * /bin/sh /www/wwwroot/xxxx.com/crontab.sh

目前是 8 分钟一次

rand_num=$(($RANDOM%300+60))

declare -i i=1;

while ((i<rand_num))
do
	sleep 1
	let i++
done

php /www/wwwroot/xxx.com/run.php

每 8 分钟把任务提出来一次然后再延迟 1-5 分钟,但是这样就会出现两个任务在跑的情况。。。想单任务但是时间在 a-b 间任意

TaxKiz:#!/bin/bash

export PATH='/bin:/sbin:/usr/bin:/usr/sbin'

while true; do

ps -ef | grep '/www/wwwroot/xxx.com/run.php' | grep -v '\bgrep\b' >/dev/null 2>&1

if [$? != 0]; then

rand_num=$(($RANDOM % 300 + 60))

declare -i i=1

while ((i < rand_num)); do
sleep 1
let i++
done

php /www/wwwroot/xxx.com/run.php

unset -v rand_num i

fi

done

xiaohantx:@TaxKiz crontab -e 里面的基础 8 分钟不变还是放在那是嘛

xiaohantx:@TaxKiz 好像丢服务器线程跑满了,CPU 变成了 100%。。。

TaxKiz:@xiaohantx 草率了,你加个 sleep

...
unset -v rand_num i

fi

sleep 1

done

TaxKiz:@xiaohantx sleep 时间自己定义

knightdf:```shell
*/a * * * * python -c 'import random; import time; time.sleep(random.randint(0, b-a) * 60)' && flock -x -n /www/wwwroot/xxx.com/run.php php /www/wwwroot/xxx.com/run.php
```

xiaohantx:@TaxKiz 不好意思不是很会 shell
日志报了个错
`/www/server/cron/d4e8c583cbd42140a85eac6baabec0f5: line 12: [1: command not found`

另外想问下我已经配置了定时任务,每 N (固定)分钟执行这个脚本,脚本里面的 sleep 是啥意思= =比如 1 分钟执行了这个 4 次然后随机时间还没到在后台定时这时候 sleep 是起到什么作用呢,不过感谢老哥

zlowly:1 、可以在脚本里保证单实例执行,大概方式就是
a)判断如果 lock 文件是否存在,如果存在则退出
b)touch lock
c)用 trap 在 exit 时候 rm lock
2 、这个需求其实还是不很明确,就是如果上一次还没执行完就到下一次的预定时间了该办?
3 、可以不用 crontab,用 atd 服务,然后脚本末尾用 at 指定下次执行时间。

PHP 引用其他类问题请教

wmwmajie:很多个类文件引用了 同一个第三方的库,那么这里类文件相互之间又有引用,请问这个被引用的第三方库是只会被加载一次么? 没研究过源码请教。JaguarJack:是的 只会一次

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

PHP-我们应在会话中包含哪些数据? - php

这是一个初学者的问题...在网站中,会话中应该包含或不应该包含什么类型的数据?我了解我不应该包含任何需要保持安全的信息。我对编程最佳实践更感兴趣。例如,有可能在会话中包括一些数据,否则这些数据将作为依赖项注入从一个页面发送到另一个页面。这不等于创建全局变量吗?一般来说,哪种数据在会话表中已经存在或没有?谢谢,JDelage 参考方案 您应该将会话视为一次写入…

PHP 如何实现会话永不过期,一直保持登录状态!

s609926202:目前了解到的实现方式,如下: session.use_cookies=1 session.cookie_lifetime=999999999 session.gc_maxlifetime=999999999 请问还有其他方式吗?tomczhen:说好是一辈子就是一辈子,差一年一个月一天一个时辰都不行。:doge: dzdh:验证客户端证…