如果ruby myapp.rb在localhost:4567开始sinatra预览,我怎么能以编程方式停止/停止/杀死它?终端命令(除了Ctrl-C)或Rake任务都没问题.
我需要将它合并到Rake任务或终端中.
Adr*_*ian 21
在myapp.rb中,在sinatra启动之前添加:
puts "This is process #{Process.pid}"
Run Code Online (Sandbox Code Playgroud)
如果要杀死它,请在shell中执行此操作:
kill <pid>
Run Code Online (Sandbox Code Playgroud)
<pid>myapp.rb输出的数字在哪里.如果你想在ruby中这样做:
Process.kill 'TERM', <pid>
Run Code Online (Sandbox Code Playgroud)
这两个都将让sinatra运行它的退出例程.如果您不想每次都输入pid,请让myapp.rb打开一个文件并将其放入pid中.然后,当您想要停止它时,请阅读该文件并使用它.例:
# 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')
Run Code Online (Sandbox Code Playgroud)
Die*_*che 13
在OS X中,从命令行(Terminal.app或DTerm)只需输入:
$ killall ruby
Run Code Online (Sandbox Code Playgroud)
每个红宝石过程都会停止.Sinatra也是.
在Linux(和其他UNIX)中,您可以:
$ ps aux | grep ruby
$ kill <ruby-process-id>
Run Code Online (Sandbox Code Playgroud)