#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, но это не так.