2016-07-18 4 views
0

私はSoXでmp3ファイルを処理する簡単なシェルスクリプトを作った。PPSSシェルスクリプト

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フォルダにスクリプトを保存し、それは正常に動作します。

しかし、今では8つのインスタンスを並行して実行するために、PPSSと一緒に使用したいと考えています。ログファイルで、このエラーがログに記録され続けるエラーは、ログファイルには表示されません。

/usr/local/bin/ppss:2283行:soxy.sh/Users/marw/Downloads/testfolder // ppss_dir/job_log/_Users_marw_Downloads_testfolder__10_audio_mp3:そのようなファイルやディレクトリ

ステータス:FAILURE の合計処理時間(hh:mm:ss):午後12時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 

私はscrシェルに新しいですそれが愚かな質問なら、私を許してください。私のOSはMacOS 10.11.5です。

これは私がPPSSにしようとしているものです:

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

は、たぶん私は違った私のオリジナルのスクリプトを記述する必要がありますか?それはPPSSなしでもうまく動作します。

EDIT:

私はここでデバッグログを得た:http://pastebin.com/wak47rf8

+0

あなたの投稿を読み直した後、私の回答は削除されました。 '' ppss''があなたのスクリプト "soxy.sh"をあなたが与えたディレクトリパスに渡しているように見えますが、 "ppss"とそれがどのように動作するかはよく知られていません。私はもう一度投稿する前にいくつかのためにこれを熟考します。 – bluerojo

+0

ok cool :)ありがとう。ところで、それはPPSSである必要はありませんが、これは私がStackoverflowで検索したものです。私はちょうど平行してスクリプトを実行したいので、私は1の代わりに8つのコアを使うことができます。 – 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のwikiからこれを得た:-cオプションは、実行されるコマンドを指定

-dで指定されたディレクトリ内の各ファイルに対してパラレルで のPPSSによって並列化されます。この の例では、コマンドの末尾にスペースがあります。実行すると コマンドが 'gzip example.tar'に展開されるため、必要です。空白 を省略すると、エラーが発生します。

+1

この奇妙で壊れやすいスクリプトのssh機能が必要ない場合は、代わりにGNU 'parallel'またはOSX/GNU' xargs' –

+0

私は平行して試していますが、いくつか問題がありますが、xargsは並列化ツールではないようですが、マニュアルページを読み込もうとしましたが、理解できません。 PPSSも私には壊れやすいようですが、私が働かなくてはならないのはそれだけです。私はちょうどSoXを並列化する必要があるので、コアごとに1つのファイルを処理できます。私は非常に基本的な何かを逃しているかもしれないので、CLIツールには非常に新しいです。 – Marw

+0

OSXとGNUの 'xargs'はパラレル化する' -P'を持っています。 –