bash – Cron工作和随机时间,在给予小时

前端之家收集整理的这篇文章主要介绍了bash – Cron工作和随机时间,在给予小时前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要能够在完全随机的时间一天运行一次PHP脚本20次。我也想要它只在上午9点 – 晚上11点之间运行。

我熟悉在linux中创建cron作业。虽然我不能创建任何bash脚本。

如果我明白你要找什么,你将需要做一些有点凌乱,像有一个cron作业,运行一个bash脚本随机运行时间…这样的东西:

crontab:

0 9 * * * /path/to/bashscript

和/ path / to / bashscript:

#!/bin/bash

maxdelay=$((14*60))  # 14 hours from 9am to 11pm,converted to minutes
for ((i=1; i<=20; i++)); do
    delay=$(($RANDOM%maxdelay)) # pick an independent random delay for each of the 20 runs
    (sleep $((delay*60)); /path/to/PHPscript.PHP) & # background a subshell to wait,then run the PHP script
done

一些注意事项:这种方法有点浪费资源,因为它在上午9点激发20个后台进程,每个等待一个随机的分钟数(长达14小时,即11pm),然后启动PHP脚本和退出。此外,由于它使用随机分钟数(而不是秒),开始时间不是随机的,因为它们可能是。但是$ RANDOM只能达到32,767,而在上午9点到下午11点之间有50,400秒,所以随机选择秒数会更复杂一些。最后,由于开始时间是随机的并且彼此独立,所以可能(但不是很可能)同时启动脚本的两个或多个实例。

猜你在找的Bash相关文章