2016-07-18 2 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 : 해당 파일이나 디렉토리

상태 : 실패 총 처리 시간 (hh : mm : ss) : 0시 0분 1초이

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 -d /Users/marw/Downloads/testfolder -c 'soxy.sh' 

은 아마 다르게 내 원래의 스크립트를 작성해야합니다 :

이것은 내가 PPSS에 노력하고있어인가? 그것은 PPSS없이 잘 작동합니다.

편집 :

여기 디버그 로그를 가지고 : http://pastebin.com/wak47rf8

+0

게시물을 다시 읽은 후 답변을 삭제했습니다. "ppss"에 익숙하지는 않지만 어떻게 작동하는지는 알지만 "ppss"가 스크립트 "soxy.sh"를 디렉토리 경로에 전달하는 것으로 보입니다. 나는 다시 게시하기 전에 이것을 약간 숙고 할 것이다. – bluerojo

+0

ok cool :) 감사합니다. BTW, 그것은 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 위키에서이있어 : -c 옵션이 실행됩니다 명령을 지정

-d로 지정된 디렉토리 내의 각 파일에 대해 병렬로 의 PPSS에 의해 지정됩니다. 이 예에서 명령에 후행 공백이 있습니다. 이는 실행할 때 명령이 'gzip example.tar'로 확장되므로 필요합니다. 공백을 생략하면 오류가 발생합니다.

+1

이 이상하고 깨지기 쉬운 스크립트의 ssh 기능이 필요하지 않으면 GNU'병렬 '또는 OSX/GNU'xargs' –

+0

나는 병렬로 노력하고 있지만 문제가있는 것은 아니지만 xargs는 병렬 도구로 보이지 않는다. 매뉴얼 페이지를 읽으려고 시도했지만 알아낼 수는 없다. PPSS는 나에게 연약한 것처럼 보이지만, 내가 일해야하는 유일한 사람입니다. 각 코어마다 하나의 파일을 처리 할 수 ​​있도록 SoX를 병렬 처리해야합니다. 나는 CLI 도구를 처음 사용하기 때문에 매우 기본적인 것을 놓치고있을 수도 있습니다. – Marw

+0

OSX와 GNU'xargs'는'-P'를 병렬 처리합니다. –