在Ruby中,执行存储在字符串中的本地Linux命令的最佳方法是什么?

时间:2009-09-14 01:25:56

标签: ruby

在Ruby中,执行存储在字符串中的本地Linux命令的最简单方法是什么,同时捕获所引发的任何潜在异常并将Linux命令的输出和任何抛出的错误记录到公共日志文件中?

4 个答案:

答案 0 :(得分:4)

我之前遇到过同样的问题,“Process management”回答​​了我的所有需求。

如果您不想将错误与正常输出分开,请使用popen

output = IO.popen("other_program", "w+") do |pipe|
  pipe.puts "here, have some input"
  pipe.close_write
  pipe.read
end

但如果您愿意,请使用popen3

Open3.popen3('nroff -man') { |stdin, stdout, stderr| ... }

答案 1 :(得分:1)

查看IO.popen

答案 2 :(得分:1)

如果您想执行ls -a

%x[ls -a]

答案 3 :(得分:0)

以下是我用来查看流程是否处于活动状态的代码:

systemOutput=`ps -A | grep #{process_to_look_for}`
if systemOutput.include? process_to_look_for
  puts "#{process_to_look_for} is already running"
  exit
end