I'm using RVM, Ruby 1.9.2, and Rails 3.0.7
A standard kill of the process from another terminal doesn't work, either, but kill -9 does, of course.
I found a similar question, CTRL+C to Webbrick server ignored, but it's unclear whether that question is describing the same underlying issue. Also, the resolution doesn't seem to apply, since I'm not using :git in my Gemfile.
update 1: (old now... see update 2, below, for the real scoop)
I managed to narrow the issue down to a single gem. If you source the following test script, you can see the issue, too (assuming you're on Ubuntu 11.04... there was no issue in 10.04)
rm -rf tmpkilltest rvm 1.9.2 rvm --force gemset delete tmpkilltest rvm gemset create tmpkilltest rvm 1.9.2@tmpkilltest gem install rails -v=3.0.7 --no-rdoc --no-ri gem install sqlite3 -v=1.3.3 --no-rdoc --no-ri rails new tmpkilltest cd tmpkilltest echo "gem 'barista', '1.0'" >> Gemfile bundle rails s
The fact that the issue is caused by Rails' interaction with a gem leads me to now believe that this question actually is related to CTRL+C to Webbrick server ignored, though the test case above shows that this one is clearly not caused by using :git for a gem.
update 2:
In update 1 I mentioned that I narrowed it down to a gem. When I went through that gem, I eventually found the real culprit. The gem was making a single system call. I've made a very minor modification to the test script where I no longer load the barista gem, but rather I simply append a single system call at the end of the application.rb. With that system call, ctrl-c doesn't work. Remove the system call and it does work.
rm -rf tmpkilltest rvm 1.9.2 rvm --force gemset delete tmpkilltest rvm gemset create tmpkilltest rvm 1.9.2@tmpkilltest gem install rails -v=3.0.7 --no-rdoc --no-ri gem install sqlite3 -v=1.3.3 --no-rdoc --no-ri rails new tmpkilltest cd tmpkilltest bundle echo "\`date\`" >> config/application.rb rails s
This could explain the seeming similarity between this question and CTRL+C to Webbrick server ignored. My hunch is that the gem they mention also makes a system call.
I'd rather comment than add an answer for this, but not enough rep.
I have the same issue and found that resuming (with fg
) after typing ctrl-c then pausing (with ctrl-z, as offered above) does the trick.
So the recipe is:
fg
(resumes WEBrick, immediately follow through with SIGINT)
lampadmin@lampadmin-DX4840:/var/www/rails/agences$ r s => Booting WEBrick => Rails 3.0.5 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2011-05-14 14:25:36] INFO WEBrick 1.3.1 [2011-05-14 14:25:36] INFO ruby 1.9.2 (2011-02-18) [x86_64-linux] [2011-05-14 14:25:36] INFO WEBrick::HTTPServer#start: pid=2585 port=3000
^C^Z (<-- ctrl-c, then ctrl-z)
[1]+ Stopped rails s lampadmin@lampadmin-DX4840:/var/www/rails/agences$ fg rails s [2011-05-14 14:25:45] INFO going to shutdown ... [2011-05-14 14:25:45] INFO WEBrick::HTTPServer#start done. Exiting
I'm having a similar problem, have been using Ctrl+Z to pause the job, then kill -9 %1
to kill the first paused job. Roundabout way of killing it, but it works.
See this question on Superuser for more info: https://superuser.com/questions/243460/what-to-do-when-ctrl-c-cant-kill-a-process
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With