Пожалуйста, посмотрите на мой скрипт, чтобы получить и проанализировать данные xmltv:
#! /bin/bash
/bin/rm -f /home/hts/webgrab/multiple/out/*.xml
/home/hts/webgrab/multiple/1/run.sh &
/home/hts/webgrab/multiple/2/run.sh &
/home/hts/webgrab/multiple/3/run.sh &
/home/hts/webgrab/multiple/4/run.sh &
/home/hts/webgrab/multiple/5/run.sh &
/home/hts/webgrab/multiple/6/run.sh &
/home/hts/webgrab/multiple/7/run.sh &
/home/hts/webgrab/multiple/8/run.sh &
/home/hts/webgrab/multiple/9/run.sh &
/home/hts/webgrab/multiple/10/run.sh &
/home/hts/webgrab/multiple/11/run.sh &
/home/hts/webgrab/multiple/12/run.sh &
/home/hts/webgrab/multiple/13/run.sh &
/home/hts/webgrab/multiple/14/run.sh &
/home/hts/webgrab/multiple/15/run.sh &
/home/hts/webgrab/multiple/16/run.sh &
/home/hts/webgrab/multiple/17/run.sh &
/home/hts/webgrab/multiple/18/run.sh &
/home/hts/webgrab/multiple/19/run.sh &
/home/hts/webgrab/multiple/20/run.sh &
/home/hts/webgrab/multiple/21/run.sh &
wait
/usr/bin/tv_cat /home/hts/webgrab/multiple/out/*.* > /home/hts/webgrab/multiple/out/guide.xml
#copy result with timestamp
/bin/cp -rf /home/hts/webgrab/multiple/out/guide.xml "/var/www/guide/guide-$(date +"%Y%m%d").xml"
sleep 10
#find and rename file 5 day old
/usr/bin/find /var/www/guide -type f -name 'guide*' -mtime 5 -execdir /bin/mv {} /var/www/guide/pl.xml ';' 2> /home/hts/epg.log
Как видите, выполняется несколько webgrab
экземпляров программы, скрипт ждет, пока все они завершатся sh. Затем результаты объединяются в один файл xmltv (guide. xml), затем guide. xml копируется в каталог /var/www/guide
с отметкой времени. Последний шаг:
/usr/bin/find /var/www/guide -type f -name 'guide*' -mtime 5 -execdir /bin/mv {} /var/www/guide/pl.xml ';' 2> /home/hts/epg.log
находит старый файл за 5 дней * go, если существует (-mtime 5
) и переименовывает его (с перезаписью старого) в pl.xml
.
Проблема: похоже, последняя команда никогда не выполняется. В результате выполнения задания cron я получаю только новый файл метки времени, но переименованный pl.xml
всегда отсутствует. Но если я запускаю команду find
, как указано выше, из командной строки, старый файл корректно переименовывается в pl.xml
Есть идеи, что здесь не так? Полные пути команд включены, чтобы убедиться, что они будут работать с cron. Но это не помогло, команда найти и переименовать не работает. Старый файл наверняка существует, потому что он был создан 5 днями ранее, но по какой-то причине команда переименования не работает из cron внутри этого скрипта.