cron工作没有完成这个过程?

时间:2011-03-25 07:02:18

标签: ruby-on-rails ruby process ffmpeg crontab

我有一个ruby程序,可以使用ffmpeg将视频转换为MP4格式。我使用crontab每15分钟运行一次ruby程序。 crontab实际上运行ruby程序,但文件的转换不完整。在完成转换之前,该过程已停止。我的testin示例代码如下。

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

如果我在控制台中手动运行,此代码可以正常工作。

1 个答案:

答案 0 :(得分:1)

我的第一个猜测是它在“点”目录上死亡。在Unix中,每个目录/文件夹中都有两个目录:“。”和“......”。您需要特别跳过脚本中的那些:

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

- 或 -

专门查看您想要的任何文件类型

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

更新:20110401

将Unix重定向添加到crontab条目以查看输出是什么

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