[英]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.