从ruby发出咕噜声任务并再次终止它

时间:2014-05-18 10:52:31

标签: ruby

我正试图从ruby开始一项艰巨的任务。此任务永远运行,因为它启动了服务器。

稍后在ruby脚本中我想关闭那个我用grunt开始的服务器。

我现在有以下内容:

grunt_proxy_pid = spawn("TARGET_PORT=#{port+1} PROXY_PORT=#{port} grunt server:test", :out=>"/dev/null")
Process.detach grunt_proxy_pid

... ruby code ...

Process.kill "SIGINT", grunt_proxy_pid

但是这不会终止grunt任务,只会执行执行grunt server:test命令的shell命令(在任务管理器中,带有pid'grunt_proxy_pid'的任务类似于sh -c TARGET_PORT=3523 PROXY_PORT=3224 grunt server:test但是grunt进程本身有另一个pid。

如何才能获得gidnt任务pid以便终止grunt任务?

1 个答案:

答案 0 :(得分:1)

事实证明,以这种方式设置环境变量是问题所在。以这种方式设置它们有效:

grunt_proxy_pid = spawn({
  "TARGET_PORT" => "#{port+1}",
  "PROXY_PORT" => "#{port}"
}, "grunt server:test", :out=>"/dev/null")
Process.detach grunt_proxy_pid

这样,grunt命令不会以sh -c开头,grunt_proxy_pid是grunt进程本身的pid。