加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – Cron工作和随机时间,在给定的时间内

发布时间:2020-12-16 01:40:28 所属栏目:安全 来源:网络整理
导读:我需要能够在完全随机的时间内每天运行20次 PHP脚本.我也希望它只在上午9点到晚上11点之间运行. 我熟悉在linux中创建cron作业. 解决方法 如果我理解你在寻找什么,你需要做一些有点混乱的事情,比如有一个运行bash脚本的cron作业,随机化运行时间……这样的事情
我需要能够在完全随机的时间内每天运行20次 PHP脚本.我也希望它只在上午9点到晚上11点之间运行.

我熟悉在linux中创建cron作业.

解决方法

如果我理解你在寻找什么,你需要做一些有点混乱的事情,比如有一个运行bash脚本的cron作业,随机化运行时间……这样的事情:

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个小时,即晚上11点),然后启动php脚本和退出.此外,由于它使用随机分钟数(而不是秒数),因此开始时间并不像它们那样随机.但是$RANDOM只上升到32,767,并且在上午9点到晚上11点之间有50,400秒,将秒数随机化也会有点复杂.最后,由于开始时间是随机的并且彼此独立,因此可能(但不太可能)将同时启动脚本的两个或更多个实例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读