2014-05-12 42 views
1

哪裏標準錯誤去G-WAN,舉例來說,如果我有這樣的Ruby腳本:stderr在G-WAN上走到哪裏?

require 'time' 
START_TIME = Time.now  
ENV.each do |k,v| 
    puts "#{k} => #{v} <br/>" 
end 
RUNTIME = Time.now - START_TIME 
puts "<br/>%.2f ms" % (RUNTIME*1000.0) 
$stderr.puts "Test 123" 
exit(200) 

沒有Test 123串上logs/*目錄或當該腳本要求控制檯..

回答

1

stderr在G-WAN上的位置在哪裏?

如果我記得很清楚,stdinstrerrstdout,因爲他們是無論如何無法訪問作爲G-WAN了從其父終端獨棟關閉在守護進程模式。

但是在'交互式'模式下,G-WAN仍顯示控制檯輸出,如編譯錯誤和'gracefull'崩潰報告(servlet崩潰不會導致服務器崩潰),這些文件描述符仍處於打開狀態。

這可以從任何G-WAN使用被加載的模塊(CC++C#JavaPH7Objective-C等)的腳本,即,當腳本共享G-WAN存儲器空間容易地檢查。

但是,當一個CGI處理來代替,因爲腳本運行時未加載作爲模塊(RubyPerl等)G-WAN是運行一個外部進程和管道stdout這是不同的。

在後面這種情況下,G-WAN需要另一個管道來傳輸stderr。這沒有完成,這就是爲什麼你從Ruby腳本指令輸出到stderr什麼都看不到。

使用更多的管道會消耗更多的文件描述符,並且在服務器負載下速度更快,因此,除非您對此功能具有引人注目的用途,值得與我們共享,否則實現它可能沒有多大意義。

更爲理想的是,所有腳本語言都應該使用在G-WAN內存空間中加載的模塊,因爲這樣可以實現更高的性能和併發性。

因此,在G-WAN使用stderr之前,這只是一個時間問題(以及來自Ruby社區的幫助),而不需要額外費用Ruby