【发布时间】:2016-07-18 17:21:57
【问题描述】:
我制作了一个简单的 shell 脚本来使用 SoX 处理 mp3 文件。
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:第 2283 行:soxy.sh/Users/marw/Downloads/testfolder//ppss_dir/job_log/_Users_marw_Downloads_testfolder__10_audio_mp3:没有这样的文件或目录
状态:失败 总处理时间(hh:mm:ss):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 脚本的新手,如果这是一个愚蠢的问题,请原谅我。我的操作系统是 MacOS 10.11.5。
这就是我正在尝试使用 PPSS:
ppss -d /Users/marw/Downloads/testfolder -c 'soxy.sh'
也许我必须以不同的方式编写我的原始脚本?不过,没有 PPSS 也能正常工作。
编辑:
我这里有一个调试日志:http://pastebin.com/wak47rf8
【问题讨论】:
-
我在重读您的帖子后删除了我的答案。似乎
ppss正在将您的脚本“soxy.sh”传递到您提供的目录路径中,尽管我不熟悉“ppss”及其工作原理。在再次发布之前,我会考虑一下。 -
好酷 :) 谢谢。顺便说一句,它不一定是 PPSS,但这是我在 Stackoverflow 上搜索的结果。我只想并行运行脚本,所以我可以使用 8 个内核而不是 1 个。
-
我找到了答案,我不得不在“soxy.sh”之后留下一个尾随空格,就像这个“soxy.sh”。我只是这样尝试过,它可以工作。
-
很高兴听到它:)。
-
您可以发布自己问题的答案,以防其他人像您一样偶然发现这个问题
标签: linux macos parallel-processing sox