【问题标题】:cron job is not completing the process?cron 作业没有完成这个过程?
【发布时间】:2011-04-01 20:40:36
【问题描述】:

我有一个使用 ffmpeg 将视频转换为 MP4 格式的 ruby​​ 程序。我使用 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

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

【问题讨论】:

  • 你能发布 crontab 条目吗?另外,这是完整的脚本吗?

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


【解决方案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

【讨论】:

  • 没有“..”和“.”不是未完成的原因。我曾尝试直接在 crontab 中使用 ffmpeg 命令,但仍然遇到同样的问题。我的意思是文件夹中的一个视频文件并直接指定路径...
  • 您的 crontab 中是否添加了重定向?他们将向您显示任何可能在成功/失败时生成的错误消息。添加到我上面的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多