如果
ruby myapp.rb在本地主机启动sinatra预览:4567,我如何以编程方式停止/停止/杀死它?终端命令(Ctrl-C除外),或者Rake任务会很好.
我需要将其纳入耙子任务或终端.
解决方法
在myapp.rb中,在sinatra开始之前添加:
puts "This is process #{Process.pid}"
当你想杀死它,在shell中执行此操作:
kill <pid>
其中< pid>是myapp.rb输出的号码.如果你想在红宝石中做:
Process.kill 'TERM',<pid>
这两个都将让sinatra运行它的退出例程.如果您不想每次都输入pid,请将myapp.rb打开一个文件,并将其放在其中.然后当你想停止它,阅读文件并使用它.例:
# myapp.rb: File.open('myapp.pid','w') {|f| f.write Process.pid } # shell: kill `cat myapp.pid` # ruby: Process.kill 'TERM',File.read('myapp.pid')