2016-07-18 61 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'来并行化。 –