2013-07-03 2 views
1

У меня проблема с xargs и Wget при запуске как сценарии оболочки в приложении Applescript. Я хочу, чтобы Wget выполнял 4 параллельных процесса в фоновом режиме. Проблема: в основном, когда я пытаюсь запустить процесс в фоновом режиме сbackground xargs/wget не придерживается ограничений -P и -n

cat urls.txt | xargs -P 4 -n 1 /usr/local/bin/wget -q -E -b 1> NUL 2> NUL 

процесс, Wget, по-видимому запускается для каждого URL передается из текстового файла. Это слишком обременительно в памяти пользователя. Когда я запускаю его на первый план, однако, что-то вроде:

cat urls.txt | xargs -P 4 -n 1 /usr/local/bin/wget -q -E 

я, кажется, чтобы получить четыре параллельных WGET процессы мне нужно. Кто-нибудь знает, как заставить этот сценарий работать в фоновом режиме только с 4 процессами? Я немного новичок, и, боюсь, я не могу понять, почему происхождение этого процесса вызывает изменение.

ответ

1

Вы можете запустить xargs на фоне вместо:

cat urls.txt | xargs -P4 -n1 wget -q & 

Или, если вы хотите, чтобы вернуть управление AppleScript, откреститься процесс xargs:

do shell script "cat urls.txt | xargs -P4 -n1 /usr/local/bin/wget -q & disown $!" 
+0

Я пробовал оба без успеха. Что мне не хватает? В принципе, я хочу, чтобы Applescsript продолжал работу, поэтому ASObjC Runner может обновить пользователя по ходу xargs/wget. Даже после попытки «сделать сценарий оболочки» cat urls.txt | xargs -P4 -n1/usr/local/bin/wget -q -E & disown $! "', Applescript ждет, пока процесс не будет завершен, прежде чем двигаться дальше. Есть идеи? Спасибо за предложения до сих пор. – user2437842

0

Насколько я могу судить, Я решил проблему с

cat urls.txt| (xargs -P4 -n1 wget -q -E >/dev/null 2>&1) & 

Возможно, есть лучшее решение, хотя ...