2011-03-25 10 views
1

ffmpeg를 사용하여 비디오를 MP4 형식으로 변환하는 루비 프로그램이 있습니다. 그리고 저는 crontab을 사용하여 15 분마다 루비 프로그램을 실행합니다. crontab은 실제로 루비 프로그램을 실행하지만 파일 변환은 완료되지 않았습니다. 변환을 완료하기 전에 프로세스가 중지됩니다. testin에 대한 샘플 코드는 다음과 같습니다.cron 작업이 프로세스를 완료하지 못하고 있습니까?

def convert(y) 
system "ffmpeg -i #{SOURCE_FOLDER + LOCATION_SOURCE}/#{y} -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 #{DEST_FOLDER + LOCATION_DEST}/#{y}" 
end 
SOURCE_FOLDER = "/home/someone/work/videoapp/public/" 
DEST_FOLDER = "/home/someone/work/videoapp/public/" 
LOCATION_SOURCE = "source" 
LOCATION_DEST = "dest" 
files = Dir.new(SOURCE_FOLDER + LOCATION_SOURCE) 
files.each do |x| 
    convert(x) 
end 

이 코드는 콘솔에서 수동으로 실행하면 정상적으로 작동합니다.

+0

crontab 항목을 게시 할 수 있습니까? 또한, 전체 스크립트입니까? – Wukerplank

답변

1

나의 첫 번째 추측은 "점"디렉토리에서 죽어 가고 있다는 것입니다. 유닉스에는 모든 디렉토리/폴더에 두 개의 디렉토리가 있습니다 : "." 및 "..". 당신은 특히 스크립트에서 그 생략해야합니다 중 하나

next if File.directory?(x) # OR 
next file x.match(/^\.+$/) 

을 - 또는 -

봐 특별히 당신이

Dir[SOURCE_FOLDER + LOCATION_SOURCE + "*.wav"].each do |file| 
    convert(file) 
end 

업데이트하고자하는 어떤 파일 형식에 대한 : 20110401

유닉스를 crontab 항목에 리다이렉트하여 출력 내용을 확인하십시오

* * * * * /your/program/location/file.rb 1> /some/output/file.txt 2>&1

+0

아니요 ".."및 "." 불완전한 이유가 아닙니다. 나는 crontab에서 ffmpeg 명령을 직접 사용해 보았지만 여전히 같은 문제가있다. 폴더에있는 하나의 비디오 파일을 의미하고 직접 경로를 지정하면 ... – zealmurugan

+0

crontab에 리디렉션이 추가 되었습니까? 성공/실패시 생성 될 수있는 오류 메시지가 표시됩니다. 위의 내 대답에 추가. – samullen

관련 문제