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