3

如果我使用 ruby​​ 的 pty 类运行这样的命令,如果找到某个输入字符串,我该如何杀死它?

cmd = "appcfg.py update cdn"
PTY.spawn("#{cmd} 2>&1") do | input, output, pid |
  begin
    input.expect("Email:") do
      output.write("#{credentials[:username]}\n")
    end
    input.expect("Password:") do
      output.write("#{credentials[:password]}\n")
    end
    if input.gets == "SOMETHING"
      EXIT!
    end
  rescue Exception => e
    puts "GAE Error..."
  end
end

这样做的正确方法是什么?

4

1 回答 1

1

这样的事情呢?

processes =  %x[ps -A].split("\n")
processes.each do |p|
  if p.include?('ruby1.9')
    pid = p.split(' ')
    %x[kill #{pid[0].to_i}]
  end
end

如果您运行 ruby​​1.9 (它会杀死所有 ruby​​1.9 进程!(因此,如果您在服务器上运行其他一些 ruby​​ prog 或其他东西,则必须执行一些 if 语句来检查它是哪个进程)。

于 2010-04-12T12:54:41.703 回答