|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Sergey Terentiev 2:5030/861.1 04 Jun 2005 00:18:09 To : All Subject : скрипт для wget --------------------------------------------------------------------------------
Пытаюсь прикрутить wget для автономной скачки файлов с инета в заданное время.
Сейчас это сделано так:
1. По крону запускается скрипт ppp-on, который дозванивается до провайдера, и
запускает wget с ключами -c -i files.url
2. Раз в 10 минут по крону запускается скрипт, который проверяет наличие
соединения, и если его нет, то запускает скрипт из п. 1
3. По крону запускается скрипт который в заданное время запускает ppp-down
и killall wget
Собственно проблемы:
1. Hесмотря на наличие ключа -c часто большие файлы получаются битыми. Когда
образ тянется неделю, а потом оказывается битым, довольно обидно.
2. Hеобходимость контролировать: докачались ли все файлы? Hе пора ли убирать из
крона запуск всей этой лабуды? Если файлов много, а скачались не все, из списка
файлов надо убрать скачанные. Короче лишние действия руками.
Пока решаю проблему ь1, т.к. она более важная.
Единственное что придумал - wget'у плохеет от того, что я его убиваю без
предупреждения (killall wget) и поэтому файл получается битый. Это правда только
мое предположение.
Как вариант - посылать wget'у сигнал STOP
Попробовал так:
kill -STOP `ps -aux|grep wget|/usr/bin/perl -ne
'if(~/.*grep.*/ig){exit}$_=~/^.*?\b(\d+)\b.*/ig;if($1>0){print
"$1\n";}else{print "xyz\n";};'` 2>/dev/null
Проверка на наличие grep связана с тем, что вывод ps -aux|grep wget у меня
обычно такой (с этим можно как-то бороться?):
sst 4828 0.0 1.9 7316 1840 pts/0 T 23:22 0:00 wget -m -r
http://rallyfan.ru
sst 5640 0.0 0.6 4596 648 pts/4 S 23:31 0:00 grep wget
Вроде работает, но как-то странно. В одной консоли запускают wget, в другой
руками kill -STOP proc_id (подсмотренный из ps). wget моментально
останавливается.
Пробую тоже самое делать скриптом. Скрипт "подвисает" секунд на 10, после чего
wget останавливается. Из-за чего такая задержка?
И вообще, мое решение начинает казаться кривоватым. Hаверняка уже кто-то решал
эту проблему - поиск и останов процесса в заданное время и поик и оживление
остановленного процесса в более другое время.
Впринципе решение должно быть универсальным, не зависящим от количества
процессов. Сейчас у меня 1 wget, а потом может и 10 висеть.
Проблему ь2 пока только обдумываю. Поскольку работаю на виндовой машине, а на
линукс хожу по ssh, то список файлов для скачивания думаю удобно будет хранить в
mysql базе (mysql и apache на линуксе запущены), чтобы файлы в очередь можно
было добавлять через веб интерфейс.
Правда не придумал пока как определять, что файл докачался, чтобы убрать из
очереди. Если подскажете хорошее решение буду благодарен =)
Вообщем буду благодарен всем советам и ссылкам на почитать.
/#ЬЬЬЬЬ#/
--- _*ЯЯЯЯЯ*_ *[www.rallyfan.ru]*
* Origin: Бог подаст , бpатва отнимет ! (2:5030/861.1)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/329842a0bb08.html, оценка из 5, голосов 10
|