2011-02-28 27 views
2

與紅寶石的cron簡單的問題,Cron和Ruby ..「放置`系統命令」「做什麼?

我有它運行

puts `tar etc..` 

腳本我試圖調試爲什麼這個腳本不tarring像它的文件應該..

當我手動調用它,我看到焦油輸出過它工作正常..

不會其實是把做任何事情時,其在cron作業運行?

感謝

丹尼爾

+0

我不會說ruby,但'puts'只是輸出字符串嗎?我爲什麼要做一些像調用'tar'的東西? – hop 2011-02-28 10:45:00

+2

@hop反引號是調用例如Ruby的方式之一'系統(...)' – Gareth 2011-02-28 10:46:19

+0

啊!沒有看到那些。 – hop 2011-02-28 10:51:23

回答

3

從crontab的幫助頁面:

如果標準輸出和標準錯誤都不會受到來自crontab條目執行的命令重定向,任何生成的輸出或錯誤,應爲通過實現定義的方法郵寄給用戶。

我通常用於調試的crontab做的是創造一個記錄器:

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

,如果你有安裝寶石的特權,你可以嘗試,而不是依賴於系統焦油minitar。

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