2013-07-26 41 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