2016-07-18 89 views
0

我做了一個簡單的shell腳本來處理SoX的MP3文件。PPSS shell腳本

for f in ./*.mp3; do sox "$f" "${f%%.mp3}S.mp3" silence 1 0.02 1% -1 0.02 1%; done 

的語法應該是這樣的:

sox in.wav out.wav silence 1 0.1 1% -1 0.1 1% 

它會從我有一個文件夾中的文件刪除沉默,並創建一個「X」在最後一個新的文件(區分從原來的)。我將腳本保存在我的/ bin文件夾中,並且工作正常。

但是,現在我想與PPSS一起使用它,以便並行運行8個實例。雖然我似乎無法得到它的工作,但在日誌文件中,我收到的錯誤是日誌中的這個錯誤:

/usr/local/bin/ppss:line 2283:soxy.sh/Users/marw/Downloads/testfolder // ppss_dir/job_log/_Users_marw_Downloads_testfolder__10_audio_mp3:沒有這樣的文件或目錄

狀態:FAILURE 總處理時間(小時:分鐘:秒):00:00:01

的PPSS語法應該是這樣的:

|P|P|S|S| Distributed Parallel Processing Shell Script 2.97 

usage: /usr/local/bin/ppss [[ -d <sourcedir> | -f <sourcefile> ]] [[ -c '<command> "$ITEM"' ]] 
       [[ -C <configfile> ]] [[ -j ]] [[ -l <logfile> ]] [[ -p <# jobs> ]] 
       [[ -q ]] [[ -D <delay> ]] [[ -h ]] [[ --help ]] [[ -r ]] [[ --daemon ]] 

Examples: 
       /usr/local/bin/ppss -d /dir/with/some/files -c 'gzip ' 
       /usr/local/bin/ppss -d /dir/with/some/files -c 'cp "$ITEM" /tmp' -p 2 
       /usr/local/bin/ppss -f <file> -c 'wget -q -P /destination/directory "$ITEM"' -p 10 

我是新來的shell scr如果這是一個愚蠢的問題,請原諒我。我的操作系統是MacOS 10.11.5。

這就是我想用PPSS:

ppss -d /Users/marw/Downloads/testfolder -c 'soxy.sh' 

也許我必須以不同的方式寫我原來的劇本?雖然沒有PPSS,但它工作正常。

編輯:

我有一個調試日誌的位置:http://pastebin.com/wak47rf8

+0

我在重新閱讀您的帖子後刪除了我的答案。看起來'ppss'正在將你的腳本「soxy.sh」傳遞給你給它的目錄路徑,儘管我不熟悉「ppss」以及它的工作原理。在再次發帖之前,我會仔細考慮這一點。 – bluerojo

+0

好酷:)謝謝。順便說一句,它不一定是PPSS,但這是我發現在Stackoverflow上搜索。我只是想並行運行腳本,所以我可以使用8個內核而不是1個。 – Marw

+0

我找到了答案,我必須在「soxy.sh」之後留下尾部空格,就像這個'soxy.sh'。試過這種方式,它的工作。 – Marw

回答

1

的-c參數必須具有在結尾加上空間。這工作:

ppss -d /Users/marw/Downloads/testfolder -c 'soxy.sh ' 

雖然這不起作用:

ppss -d /Users/marw/Downloads/testfolder -c 'soxy.sh' 

我得到這個從Github上PPSS維基:

-c選項指定將要執行的命令由PPSS以 並行爲由-d指定的目錄內的每個文件。在這個 例子中,該命令有一個尾隨空格,這是必需的,因爲 命令在執行時會擴展爲'gzip example.tar'。如果省略了空間 ,則會發生錯誤。

+1

考慮使用GNU'parallel'或OSX/GNU'xargs',而不需要這種奇怪而脆弱的腳本的ssh功能 –

+0

我試着平行但有一些麻煩,但xargs似乎並不是一個平行工具,我試着閱讀手冊頁,但無法弄清楚。 PPSS對我來說似乎也很脆弱,但這是我唯一能夠工作的人。我只需要對SoX進行並行處理,以便我可以爲每個內核處理一個文件。我對CLI工具很陌生,所以我可能會錯過一些非常基本的東西。 – Marw

+0

OSX和GNU'xargs'具有'-P'來並行化。 –