簡體   English   中英

用Cron運行Ruby的問題

[英]Problem with running Ruby with Cron

我的紅寶石文件就是這樣。

`mkdir #{HOST} -p`

它可以正常工作: ruby mycode.rb

但是,在一個cron工作中

0 * * * *紅寶石〜/ backup.rb >> backup.log

它將是-p文件夾。 為什么?

任何人都使用cron作業遇到的#1問題是,出於安全原因,通常cron作業以最小的$PATH運行。 因此, 可能是您的cron作業運行的路徑與從shell運行腳本時的路徑不同,這意味着在cron作業中可能會調用不同的mkdir逗號,這將以不同的方式解釋其參數。

通常 ,第一個filename參數停止選項處理,此后出現的所有內容都將被視為文件名。 因此,由於#{HOST}是文件名,此后的所有內容將被視為文件名,這意味着該調用將被解釋為“建立兩個目錄,一個名為#{HOST} ,另一個名為-p ”。例如,您查看mkdir的規范,在文件名傳遞選項完全是非法的。

另一種可能性是由於某種原因,在cron下運行時, #{HOST}將為空。 然后,整個通話擴展到mkdir -p ,而這又取決於你的實現mkdir 可能被解釋為“創建一個目錄中名為-p ”。

我不太清楚為什么您以錯誤的順序傳遞選項和操作數,而不是mkdir -p #{HOST} 這也是我不明白為什么你使用的shell 可言 ,而不是僅僅FileUtils.mkdir_p(HOST)

我看到的另一個問題是#! 使用/ usr / bin / env時,腳本行失敗。 例如:

#!/usr/bin/env ruby

在cron下運行時找不到紅寶石。 你必須用

#!/usr/local/bin/ruby

或您平台上的同等產品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM