2013-07-26 40 views
-2

我不會在Ruby on Linux服務器上編寫一些腳本。我需要從服務器統計,我是Ruby的初學者。Ruby中的Linux命令

我有Linux命令的問題,因爲如果我使用exec來使用Linux命令,我的程序崩潰沒有錯誤。

disks = ["sda", "sdb"] 

代碼:

disks.each do |disk| 
    puts "disk test start" 
    exec "smartctl -a /dev/#{disk} > /tmp/sestavy/#{disk}" 
    puts "disk test end" 
end 

輸出:

[[email protected] sestavy]# ruby test.rb 
disk test start 
[[email protected] sestavy]# 

感謝 洪扎

+0

你可能想'system()'而不是'exec()'。 –

回答

1

這就是exec所做的:它用新的替換當前正在運行的程序。這不是特定於Ruby的,在幾乎任何其他環境中,它在shell中都以與C相同的方式工作。

+0

像往常一樣,你可以在這裏提供更詳細的解釋嗎?一直在尋找學習新的東西.. :) –

+1

@Priti它是來自unix的EXCEL系統調用組的招標。檢查[execve](http://linux.die.net/man/2/execve)和[fork-exec](http://en.wikipedia.org/wiki/Fork-exec) – fotanus

+1

@fotanus感謝您的支持擡頭.. :) –

1

當您使用exec,它取代您要執行什麼當前進程。所以它不會返回到你的Ruby腳本。有關shell執行的不同方法,請參見this explanation

+0

非常感謝 – Chochole