【问题标题】:Linux commands in Ruby [closed]Ruby 中的 Linux 命令 [关闭]
【发布时间】:2013-07-26 12:12:39
【问题描述】:

我不会在 Linux 服务器上用 Ruby 编写一些脚本。我需要来自服务器的统计数据,而且我是 Ruby 的初学者。

我对 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

输出:

[root@banan sestavy]# ruby test.rb
disk test start
[root@banan sestavy]#

谢谢 洪萨

【问题讨论】:

  • 您可能想要system() 而不是exec()

标签: ruby linux command exec


【解决方案1】:

这正是exec 所做的:它将当前运行的程序替换为一个新程序。这不是 Ruby 特有的,它在 shell、C 和几乎任何其他环境中的工作方式都是相同的。

【讨论】:

  • 像往常一样,你能在这里放更详细的解释吗?一直在寻找向你学习新东西.. :)
  • @Priti 它是来自 unix 的 exec 系统调用组的投标。检查execvefork-exec
  • @fotanus 感谢您的提醒.. :)
【解决方案2】:

当您使用exec 时,它会将当前进程替换为您要执行的进程。所以它不会返回到您的 Ruby 脚本。有关 shell 执行的不同方法,请参阅 this explanation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多