【问题标题】:Cron and Ruby.. Does "puts `system command`" do anything?Cron 和 Ruby ..“puts `system command`”有什么作用吗?
【发布时间】:2011-02-28 19:34:19
【问题描述】:

关于使用 ruby​​ 的 cron 的快速问题,

我有一个可以运行的脚本

puts `tar etc..`

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

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

当它在 cron 作业中运行时,puts 真的会做任何事情吗?

谢谢

丹尼尔

【问题讨论】:

  • 我不会说红宝石,但puts 不只是输出字符串吗?我为什么要诸如致电tar之类的事情?
  • @hop 反引号是 Ruby 的调用方式之一,例如system(...)
  • 这应该可行 - 请提供更多详细信息。

标签: ruby linux cron tar crontab


【解决方案1】:

来自 crontab 帮助页面:

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

我通常为调试 crontab 做的是创建一个 Logger:

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

【讨论】:

    【解决方案2】:

    如果你有权限安装 gems,你可以试试 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
    

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 2010-11-11
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      相关资源
      最近更新 更多