Мне нужно запустить один скрипт, который займет одну дату в качестве аргумента. Он настроен с использованием cron для ежедневной работы, но мне нужно запустить его на временной диапазон. Проблема в том, что это приведет к приему всех результатов, если оно выполняется в течение одного дня из-за огромного размера таблицы. Таким образом, можно динамически отправлять каждую дату с даты начала из сценария оболочки?
Например: если мне нужно запустить update_cron.php
с '2013-10-05'
тогда ему нужно запустить
php update_cron.php '2013-10-05'
php update_cron.php '2013-10-06'
php update_cron.php '2013-10-07'
до сегодняшнего дня (или указанной даты окончания). Я очень новичок в сценариях оболочки, поэтому будет полезно, если кто-то может внести свой вклад в это.
Эта функция должна начать вас
iterdate() {
cur="$1"
end="$2"
while [ $cur != $end ]
do
echo php update_cron.php $cur
cur=$(date -d "$cur + 1 day" +%Y-%m-%d)
done
}
Вы можете использовать его так
$ iterdate 2013-10-05 2013-10-08
php update_cron.php 2013-10-05
php update_cron.php 2013-10-06
php update_cron.php 2013-10-07
Просто удалите эхо в нем, чтобы фактически запустить команду php update
. Обратите внимание: если вам нужно запустить это в задании cron, вам может быть проще сделать скрипт, а не функцию. Затем скопируйте следующее в текстовый файл и сделайте его выполнимым
#!/bin/bash
cur="$1"
end="$2"
while [ $cur != $end ]
do
echo php update_cron.php $cur
cur=$(date -d "$cur + 1 day" +%Y-%m-%d)
done
А потом
$ /path/to/iterdate.sh 2013-10-05 2013-10-08
php update_cron.php 2013-10-05
php update_cron.php 2013-10-06
php update_cron.php 2013-10-07