A server is already running. Check …/tmp/pids/server.pid. Exiting - rails
Ruby on-RailsRuby on-Rails Problem Overview
..$ rails s
=> Booting WEBrick
=> Rails 4.0.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
A server is already running. Check /home/..name/rprojects/railsapp/tmp/pids/server.pid.
Exiting
what is the easiest way to solve this for a rails beginner?
Ruby on-Rails Solutions
Solution 1 - Ruby on-Rails
You can delete the server.pid
file.
rm /your_project_path/tmp/pids/server.pid
Else:
try in OSX:
sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000
or in linux:
ps -aef | grep rails
or
lsof -wni tcp:3000
kill the process using
kill -9 PID (eg,2786)
Solution 2 - Ruby on-Rails
Short and Crisp single line command, that will take care of it.
kill -9 $(lsof -i tcp:3000 -t)
Solution 3 - Ruby on-Rails
server.pid
only contains the process ID of the running server.
If you do:
more /your_project_path/tmp/pids/server.pid
you will get a number (say 6745) which you can use to stop the previous server with the command kill:
kill -9 6745
and then you can remove the file with the rm
command
rm /your_project_path/tmp/pids/server.pid
Solution 4 - Ruby on-Rails
If you are using docker-compose, and in docker-compose.yml have:
volumes:
- .:/myapp
That means you local workspace is mapped to the container's /myapp folder.
Anything in /myapp will not be deleted for the volumes define.
You can delete ./tmp/pids/server.pid
in you local machine. Then the container's /myapp will not have this file.
Solution 5 - Ruby on-Rails
Simple:
go in the root folder of the project when this happens and run:
gem install shutup
shutup
This will find the process currently running, kill it and clean up the pid file
NOTE: if you are using rvm install the gem globally
rvm @global do gem install shutup
Solution 6 - Ruby on-Rails
Run this command -
lsof -wni tcp:3000
then you will get the following table -
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 2552 shyam 17u IPv4 44599 0t0 TCP 127.0.0.1:3000 (LISTEN)
ruby 2552 shyam 18u IPv6 44600 0t0 TCP [::1]:3000 (LISTEN)
Run this command and replace PID from the Above table
kill -9 PID
example:
kill -9 2552
Solution 7 - Ruby on-Rails
Issue can be solved using:
kill -9 $(more /home/..name/rprojects/railsapp/tmp/pids/server.pid)
Solution 8 - Ruby on-Rails
It happens sometimes because you turn off the server by force, for example turning off the OS/machine manually so that the server does not have enough time to log to server.pid.
One easy way is to manually go to tmp/pids/
(the directory that is shown in your console.) and remove server.pid
file. Then, when you start the server again, rails server
or rails s
,it creates a new server.pid and you can continue development.
Solution 9 - Ruby on-Rails
First Find PID # - where the Rails Server got stuck on
Run this to find the stuck PID
cat ./tmp/pids/server.pid
It will return something like 65829
Then KILL that PID => kill 65829
Solution 10 - Ruby on-Rails
Kill server.pid by using command:
kill -9 `cat /root/myapp/tmp/pids/server.pid`
Note: Use your server.pid path which display in console/terminal.
Thank you.
Solution 11 - Ruby on-Rails
the gui way for Windows user
open the ResourceMonitor (taskmanager ->Performance -> ResourceMonitor) and kill the ruby.exe process
Solution 12 - Ruby on-Rails
For added information, under the context of running the application in docker.
In docker-compose.yml file, under the application container itself, you can use one of the following:
command: ["rm /your-app-path/tmp/pids/server.pid && bundle exec bin/rails s -p 3000 -b '0.0.0.0'"]
or
command: ["rm /your-app-path/tmp/pids/server.pid; foreman start"]
Note the use of either ;
or &&
, that &&
will send an exit signal if rm
fails to find the file, forcing your container to prematurely stop. Using ;
will continue to execute.
Why is this caused in the first place? The rationale is that if the server (puma/thin/whatever) does not cleanly exit, it will leave a pid in the host machine causing an exit error.
For portability rather than manually deleting the file on the host system, it's better to check if the file exists within scripted or compose file itself.
Solution 13 - Ruby on-Rails
Open the path/to/your/rails/project/tmp/pids/server.pid
file.
Copy the number you find therein.
Run kill -9 [PID]
Where [PID]
is the number you copied from the server.pid
file.
This will kill the running server process and you can start your server again without any trouble.
Solution 14 - Ruby on-Rails
For this problem,
What i did is:
-
Delete the Pids folder which is located under
app/tmp/
-
and then, close the terminal which we are running the current app and close the tab (in, browser window)
-
after that, again open the terminal by going inside the folder, and then do,
rails s
-
Then, it opens the fresh tab which is running our application
Solution 15 - Ruby on-Rails
first copy the cumber inside the file then remove it: rm /your_project_path/tmp/pids/server.pid then create it again. touch /YOUR_PROJECT_PATH/tmp/pids/server.pid It worked for me.
Solution 16 - Ruby on-Rails
Run given below command on terminal ( for linux only )
ps aux | grep rails
and then
kill -9 [pid]
Another way
lsof -wni tcp:3000
and then
kill -9 [PID]
Solution 17 - Ruby on-Rails
SOLVING
Address already in use — bind(2)” 500 error in Ruby on Rails
Recently I tried running a Rails app on a production server. Not only did it not work, but it broke my localhost:3000 development server as well. Localhost would only load a blank white page or a 500 error.
To solve this, I used two quick commands. If these don’t return a result, you may need to look elsewhere for a solution, but this is a good quick fix.
lsof -wni tcp:3000
This command shows all of my currently running processes and their PIDs (process IDs) on the 3000 port. Because there are existing running processes that did not close correctly, my new :3000 server can’t start, hence the 500 error.ruby 52179 rachelchervin 50u IPv6 0x...7aa3 0t0 TCP [::1]:hbci (LISTEN) ruby 52179 rachelchervin 51u IPv4 0x...c7bb 0t0 TCP 127.0.0.1:hbci (LISTEN) ruby 52180 rachelchervin 50u IPv6 0x...7aa3 0t0 TCP [::1]:hbci (LISTEN) ruby 52180 rachelchervin 51u IPv4 0x...c7bb 0t0 TCP 127.0.0.1:hbci (LISTEN)
kill 52179
kill 52180
rails s
I used the Linux kill command to manually stop the offending processes. If you have more than 4, simply use kill on any PIDs until the first command comes back blank. Then, try restarting your localhost:3000 server again. This will not damage your computer! It simply kills existing ruby processes on your localhost port. A new server will start these processes all over again. Good luck!
Solution 18 - Ruby on-Rails
SOLUTION for Windows:
- see the pid from \tmp\pids\server.pid
- open cmd as administrator
- taskkill /F /PID [pid from step 1.]
- delete server.pid file
- restart server
Solution 19 - Ruby on-Rails
For ubuntu 20, kill -9 $(ps -aef | grep rails)