2013-07-03 46 views
1

我在使用xles和Wget時遇到了問題,因爲它們在Applescript應用程序中作爲shell腳本運行。我希望Wget在後臺運行4個並行進程。問題:基本上,當我嘗試用背景xargs/wget不遵守-P和-n限制

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

一個Wget的進程中運行的進程在後臺顯然開始從.txt文件傳遞每一個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

我已經嘗試過都沒有成功。我錯過了什麼?基本上,我想讓Applescspt繼續下去,以便ASObjC Runner可以根據xargs/wget進度更新用戶。即使在嘗試'執行shell腳本'之後,Applescript也會等待,直到完成該過程,然後再繼續前進爲止。有任何想法嗎?感謝迄今爲止的建議。 – user2437842

0

至於我可以告訴大家,我已經解決了這個問題

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

有可能是一個更好的解決方案,雖然...