Изпълнявам скрипт, който на свой ред извиква друг скрипт няколко пъти във фонов режим с различни набори от параметри.
Вторичният скрипт първо прави wget на ftp url, за да получи списък с файлове на този url. Той извежда това към уникално име на файл.
Опростен пример:
Всеки от тях се извиква от отделно копие на вторичния скрипт, работещ във фонов режим.
wget --no-verbose 'ftp://foo.com/' -O '/downloads/foo/foo_listing.html' >foo.log
wget --no-verbose 'ftp://bar.com/' -O '/downloads/bar/bar_listing.html' >bar.log
Когато стартирам вторичния скрипт веднъж наведнъж, всичко се държи според очакванията. Получавам html файл със списък от файлове, връзки към тях и информация за файловете по същия начин, както бих направил, когато преглеждам ftp url през браузър.
Продължение опростени един по един (и очаквани) примерни резултати:
foo_listing.html:
...
<a href="/bgftp://foo.com/foo1.xml">foo1.xml</a> ...
<a href="/bgftp://foo.com/foo2.xml">foo2.xml</a> ...
...
bar_listing.html:
...
<a href="/bgftp://bar.com/bar3.xml">bar3.xml</a> ...
<a href="/bgftp://bar.com/bar4.xml">bar4.xml</a> ...
...
Когато стартирам вторичния скрипт много пъти във фонов режим, някои от получените файлове, въпреки че имат правилни базови URL адреси (този, който беше предаден), изброените файлове са от различно изпълнение на wget.
Продължаващи примерни резултати за опростена многопроцесорна обработка (и действителни):
foo_listing.html:
...
<a href="/bgftp://foo.com/bar3.xml">bar3.xml</a> ...
<a href="/bgftp://foo.com/bar4.xml">bar4.xml</a> ...
...
bar_listing.html
правилно, както по-горе
Колкото и да е странно, всички други файлове, които изтеглям, изглежда работят добре. Само тези файлове със списъци се объркват.
Текущото заобиколно решение е да се постави забавяне от 5 секунди между фоновите процеси. Само с тази една промяна всичко работи перфектно.
Някой знае ли как да поправя това?
Моля, не препоръчвайте да използвате някакъв друг метод за получаване на файловете със списък или да не работите едновременно. Бих искал всъщност да знам как да поправя това, когато използвам wget в много фонови процеси, ако е възможно.
РЕДАКТИРАНЕ:
Забележка:
Нямам предвид изхода за състоянието, който wget изхвърля на екрана. Изобщо не ме интересува това (това всъщност също се съхранява в отделни регистрационни файлове и работи правилно). Имам предвид данните, които wget изтегля от мрежата.
Освен това не мога да покажа точния код, който използвам, тъй като той е собственост на моята компания. Няма нищо "погрешно" в моя код, тъй като работи перфектно, когато поставя 5 секунди забавяне между фонови екземпляри.
wget
наведнъж? - person Fred Foo   schedule 18.12.2010