我正在尝试使用ruby中的Open3模块在ruby中执行“top -n 1”命令。
这是我的代码
command = "top -n 1"
Open3.popen3 (command) do |i,o,e,t|
i.close
exit_status = t.value
unless exit_status.success?
puts "NOPE"
end
t.value
end
我得到的只是NOPE。即使我尝试打印o.read
或o.gets
,我得到的只是一个空白行。
无论如何我可以使用open3来执行该命令吗?有没有其他方法可以执行它?我做错了吗?
我看到我可以使用反引号(`)来执行系统命令。这是一个好习惯吗?我看到几篇文章和博客说它不是。
提前致谢。
答案 0 :(得分:1)
您可以通过打印块参数e
:
错误应该是这样的:
顶部:失败tty get
尝试在非交互模式下运行top
时,这种情况很常见。要覆盖此设置,您需要-b
的{{1}}选项。
top
-b :Batch-mode operation
Starts top in Batch mode, which could be useful for sending output from top to other programs or to a file. In this mode, top will not accept input and
runs until the iterations limit you've set with the `-n' command-line option or until killed.
即可。
还有很多方法可以在ruby中使用check them here进行系统调用。