如果我运行这样的命令,使用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
这样做的正确方法是什么?
答案 0 :(得分: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
如果你运行ruby1.9(这将会杀死所有ruby1.9进程!)(所以如果你在你的服务器上运行一些其他ruby prog或者你必须做一些if语句来检查哪个进程)它是。