Cron和Ruby ..“put` system command`”做什么吗?

时间:2011-02-28 10:33:53

标签: ruby linux cron tar crontab

关于使用ruby的cron快速提问,

我有一个运行

的脚本
puts `tar etc..`

我正在尝试调试为什么这个脚本没有像它应该那样编写文件..

当我手动调用它时它工作正常,我也看到了tar输出..

当它在cron作业中运行时,put实际上是做什么的吗?

由于

丹尼尔

2 个答案:

答案 0 :(得分:3)

从crontab帮助页面:

  

如果标准输出和标准错误未被crontab条目执行的命令重定向,则任何生成的输出或错误都应通过实现定义的方法邮寄给用户。

我通常用于调试crontabs的是创建一个Logger:

logfile = File.open('/path/to/log.log', 'rw')
logger = Logger.new(logfile)
logger.debug('something')

答案 1 :(得分:1)

如果您有权安装宝石,可以尝试使用minitar,而不是依赖系统tar。

require 'zlib'
require 'archive/tar/minitar'
include Archive::Tar
File.open('test.tar', 'wb') do |tarfile|
    Archive::Tar::Minitar::Writer.open(tarfile) do |tar|
        Dir["file*"].each do |file|
            if File.file?(file) 
             tar.add_file(file, :mode =>0644, :mtime =>Time.now) { |stream, io|
                 stream.write( File.open(file).read )
             }
            end
        end
    end
end