2013-02-25 110 views
99

已經運行當我開始使用rails s命令軌服務器它顯示A server is already running. Check C:/Sites/folder/Pids/Server.pids服務器用Rails

當我打開它輸出一個4位數字只有這樣我怎麼能解決這個問題的文件嗎?

FYI

  1. Rails的CMD沒有其他實例正在運行這段時間。
  2. 檢查任務管理器,但只有cmd.exe顯示沒有其他進程正在運行。 (使用Windows)。
+1

我從\ tmp \ pids刪除了server.pid文件 – user6746262 2017-06-06 09:55:08

回答

157

刪除文件:C:/Sites/folder/Pids/Server.pids

+3

這個文件究竟做了什麼,並且導致這個..可以請你解釋一下:) – swapnesh 2013-02-25 17:36:34

+10

對不起,我應該進一步評論。在UNIX中,至少我們通常在像server.pid這樣的文件中跟蹤進程id(pid)。我認爲這是在做同樣的事情。那個文件可能是從崩潰中遺留下來的。 – rainkinz 2013-02-25 18:18:02

+0

我想我從Git克隆它,所以你認爲這可能是一個原因? https://github.com/swapnesh/Add_twitter_bootstrap – swapnesh 2013-02-25 18:22:32

107

老辦法:

rails s -p 4000 -P tmp/pids/server2.pid 

您也可以找到這個職位更多的選擇 Rails Update to 3.2.11 breaks running multiple servers

新解決方案

當您運行軌小號

=>引導的WEBrick

=>的Rails 4.0.4應用上http://0.0.0.0:3000

發展開始更多的啓動選項

=>運行rails server -h => Ctrl-C關機服務器

服務器已經存在運行。檢查/your_project_path/tmp/pids/server.pid。 退出

所以把這裏顯示的路徑/your_project_path/tmp/pids/server.pid

,並刪除此服務器。PID文件:

rm /your_project_path/tmp/pids/server.pid 

或櫃面你的服務器,取下然後遵循以下指導原則:

如果您分離使用命令導軌服務器「軌-d」然後,

使用命令移除導軌分離的服務器

ps -aef | grep rails 

OR by this command

sudo lsof -wni tcp:3000 

然後

kill -9 pID 

或使用該命令

要找到並殺死通過該節目運行端口名稱的過程。用於3000替換您的程序運行的端口。

sudo kill -9 $(lsof -i :3000 -t) 
+0

THX後,很多兄弟..for更多更新的信息+1 :) :) – swapnesh 2013-04-18 06:31:00

+3

我的快樂和它的工作我們的社區成員分享 – 2013-04-18 06:37:47

+0

感謝這個作品的完美。 ta – zulucoda 2013-08-11 16:35:39

3

它發生在您終止服務器進程並且pid文件沒有更新時。 最好的解決辦法是刪除文件Server.pid

使用命令

rm <path to file Server.pid>

+1

此解決方案僅適用於基於linux/unix的系統。 – 2014-01-23 09:50:30

+2

之後我不得不殺死這個進程。 http://stackoverflow.com/a/11973828/1909073。 – KEB 2014-02-24 06:41:58

76
lsof -wni tcp:3000 

那麼你應該看到紅寶石的過程,你可以運行

kill -9 processid 

你應該是不錯的。目前運行過程

rails s thin 

運行多個進程似乎不是一個好主意,從我讀過的很多人都同意。不幸的是,我注意到許多內存泄漏,所以我無法想象有兩個進程在運行。我知道在一次加班時,由於數據存儲在內存中,我的頁面刷新速度越來越慢。

+5

我每天至少回來一次這個答案! – 2014-03-30 06:45:35

+1

lsof -wni tcp是我最喜歡和最常用的命令之一 – 2014-09-26 18:06:08

+0

這就是我需要的 – Jordan 2017-06-14 22:02:16

21
kill -9 $(lsof -i tcp:3000 -t) 
+0

我認爲這隻會在Linux環境下工作 – swapnesh 2015-02-24 17:38:32

+0

像OSX上的魅力一樣工作 – Travis 2015-04-02 16:40:18

1

可能是您暫停了服務器:^Z

vim C:/Sites/folder/Pids/Server.pids輸出的四位數字是進程id。

您應該kill -9 processid,用vim(或其他編輯器)輸出的4個數字替換進程id。

9
$ lsof -wni tcp:3000 

# Kill the running process 
$ kill -9 5946 

$ rm tmp/server.pids 

工頭啓動等啓動該服務

2

gem install shutup

然後再在你的Rails項目的當前文件夾,然後運行

shutup#這會殺了Rails的進程正在運行

你可以使用命令'shutup'每次你想要

DICLAIMER:我這種寶石

注意的創造者:如果您正在使用RVM安裝gem全球

rvm @global do gem install shutup 
+0

如果你要發佈這篇文章,至少格式好吧。 – 2016-11-17 14:58:19

+0

@SergioTulentsev這個寶石對我來說效果很好,嘗試了大部分的指令,除了這個之外,其餘的都沒有任何工作。所以不,它不是垃圾郵件,它確實有效! – mayorsanmayor 2018-02-20 08:22:26

+0

@mayorsanmayor:它可能工作的很好,而且Lorenzo在短時間內對幾個問題發表了同樣的答案(我稱之爲「垃圾郵件」) – 2018-02-20 08:29:10

1

如果您使用的是Windows,你需要做的僅僅只有一步爲「軌重啓」然後再次鍵入 「軌道S」 你是好去。