случайное задание cron

#php #cron

#php #cron

Вопрос:

Мне нужен script1, который будет выполнять script2 в случайное время в день. Я собираюсь выполнять script2 около 30 раз в день в случайные промежутки времени. в задании cron будет установлен script1. Не мог бы кто-нибудь, пожалуйста, помочь, как это сделать? PS Я не программист, поэтому мне нужно что-то готовое к работе, пожалуйста

Комментарии:

1. Можете ли вы подробнее рассказать о цели? Вероятно, есть решения получше….

2. Это то, что мне нужно. Мне нужно запускать php-скрипт случайные разы в день, около 30 раз.

3. Вам нужно что-то, что ведет себя так, как будто оно выполняется случайным образом 30 раз в день. На самом деле, случайный запуск может быть не лучшим решением. Кроме того, насколько случайным оно должно быть? 30 раз в день в разное время? в среднем 30 раз за произвольное время?

4. да, я хочу, чтобы script2 запускался 30 раз в день, в произвольное время. script1 должен вызвать script2. я предполагаю, что script1 нужно было бы устанавливать в cron с более короткими интервалами для возможности запуска script2.

Ответ №1:

Решение Seth, безусловно, работает, но количество выполнений в день будет отличаться. Если вы хотите определенно 30 исполнений, не больше и не меньше, я предлагаю использовать запись cron типа

 0 0 * * * gen-executions.sh
  

и скрипт gen-executions.sh :

 #!/bin/bash
for number in $(seq 30)
do
    hour=$(( ${RANDOM}*24/32768 ))
    minute=$(( ${RANDOM}*60/32768 ))
    at -f /path/to/script.sh $(printf "d" ${hour}):$(printf "d" ${minute})
done
  

Это генерирует ровно 30 выполнений /path/to/script.sh в случайное время дня с использованием at.

Ответ №2:

 * * * * * script1.sh

#!/bin/bash
if [ $(($RANDOM*100/32768)) -gt 2 ]; then exit; fi
exec php script2.php
  

Комментарии:

1. итак, должен ли я сохранить часть, начинающуюся с #!/bin/bash, как script1.sh ? кроме того, как мне настроить случайность во времени? что такое 32768? простите новичка.

2. @Henry: $RANDOM генерирует случайное число от 0 до 32767. 30[выполнения в день] / (60*24) [минут в день] == .02 [выполнения в минуту] или 2% вероятности выполнения один раз в минуту. Да, сохраните строки, начинающиеся с #!/bin/bash, в имя файла script1.sh и поместите приведенные выше строки в вашу crontab.

3. Сет, в твоем ответе написано 32768, а в комментарии 32767, какой из них это? Я понимаю, как вы получаете процентную вероятность, но я все еще не понимаю, почему вы выбрали 32768? почему не 30000?

4. @Henry: Существует 32768 чисел от 0 до 32767 (включительно). Процентная вероятность составляет около 30 / (60 * 24) Я упоминал ранее. Я использую 32768, потому что это то, что дает мне $ RANDOM. Если бы оно генерировало числа от 0 до 29999, у меня было бы 30000, но это не так.