서버가 이미 Rails에서 실행 중입니다


137

rails s명령을 사용하여 레일 서버를 시작할 때 표시됩니다A server is already running. Check C:/Sites/folder/Pids/Server.pids

파일을 열면 4 자리 숫자 만 출력 되므로이 문제를 어떻게 해결할 수 있습니까?

참고로

  1. 이번에는 Rails cmd의 다른 인스턴스가 실행되고 있지 않습니다.
  2. 확인 된 작업 관리자이지만 cmd.exe다른 프로세스가 실행되고 있지 않음 만 표시합니다. (Windows 사용).

1
\ tmp \
pids

답변:


195

파일을 제거하십시오. C : /Sites/folder/Pids/Server.pids

설명 우리가 일반적으로 server.pid 같은 파일의 프로세스 ID (PID)를 추적 적어도에서 UNIX 토지. 나는 이것이 여기서 똑같은 일을하고 있다고 생각합니다. 그 파일은 아마도 충돌로 남겨졌을 것입니다.


5
이 파일이 정확히 무엇을하는지, 그리고 이것으로 인해 ..can 좀 더 설명해주세요 :)
swapnesh

11
죄송합니다. 추가 설명이 필요합니다. 유닉스 랜드에서는 최소한 server.pid와 같은 파일에서 프로세스 ID (pid)를 추적합니다. 나는 이것이 여기서 똑같은 일을하고 있다고 생각합니다. 그 파일은 아마도 충돌로 남겨졌을 것입니다.
rainkinz

나는 Git에서 그것을 복제한다고 생각한다. 그래서 그것이 원인 일 수 있다고 생각 하는가? github.com/swapnesh/Add_twitter_bootstrap
swapnesh

1
이 작업을 수행 한 후에도 여전히 "사용중인 포트"3000이 나타납니다.이 문제를 해결하는 방법을 아는 사람이 있습니까? 감사!
daveomcd

5
netstat -a -o명령 프롬프트에서 실행 하여 포트 3000을 사용중인 프로세스를 확인하십시오.
Rory

172

TL; DR 그냥이 명령을 실행하여 종료하십시오.

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

근본 원인 : PID가 파일에서 잠기고 웹 서버는 해당 파일이 존재하면 이미 실행 중이라고 생각합니다. 일반적으로 웹 서버는 파일이 삭제됩니다 폐쇄되어 있지만이 파일을 수동으로 제거해야하므로 경우에 따라 적절한 삭제는 발생하지 않을 때 새로운 솔루션을

레일 을 달릴 때

=> 부팅 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에 표시하십시오.

server.pid 파일을 제거 하십시오.

rm /your_project_path/tmp/pids/server.pid

또는 서버가 분리 된 경우 아래 지침을 따르십시오.

"rails -d"명령을 사용하여 레일 서버를 분리 한 경우,

명령을 사용하여 레일 분리 서버 제거

ps -aef | grep rails

또는이 명령으로

sudo lsof -wni tcp:3000

그때

kill -9 pID

또는이 명령을 사용하십시오

해당 프로그램이 실행중인 포트 이름으로 프로세스를 찾아 종료합니다. 3000의 경우 프로그램이 실행중인 포트를 교체하십시오.

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

오래된 해결책 :

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

또한 Rails Update to 3.2.11 옵션에 대한 더 많은 옵션을 보려면이 게시물을 찾을 수 있습니다


PID가 파일에 잠겨 있기 때문에 웹 서버는 해당 파일이 존재하면 이미 실행 중이라고 생각합니다. 일반적으로 웹 서버가 닫히면 파일이 삭제되지만 경우에 따라 적절한 삭제가 발생하지 않으므로 수동으로 파일을 제거해야합니다.
Taimoor Changaiz

조심하면 : 3000을 가리키는 경우 브라우저가 종료됩니다!
Aeramor

1
완벽한 솔루션sudo kill -9 $(lsof -i :3000 -t)
new2cpp

84
lsof -wni tcp:3000

그런 다음 루비 프로세스를 볼 수 있고 실행할 수 있습니다

kill -9 processid

지금 프로세스를 실행하는 것이 좋을 것입니다

rails s thin

여러 프로세스를 실행하는 것은 좋은 생각처럼 보이지 않으며 많은 사람들이 읽은 내용에서 동의합니다. 불행히도 레일로 많은 메모리 누수가 발견되어 두 프로세스가 실행되는 것을 상상할 수 없었습니다. 시간이 지남에 따라 메모리에 저장된 데이터로 인해 페이지 새로 고침이 점점 느려집니다.


27
kill -9 $(lsof -i tcp:3000 -t)

2
@CalamityAdam Rails는 일반적으로 포트 3000에서 실행됩니다. 그는이를 기반으로 프로세스를 검색하고 해당 프로세스에서 PID 만 가져오고 ( -t옵션) 검색된 PID에 의해 프로세스를 종료합니다.
totymedli

13

프로세스를 종료하여 프로세스를 제거 할 수 있습니다.

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

난이게 좋아. 훌륭하고 간결하면서도 완벽합니다. 건배.
LunaCodeGirl

11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

포먼 시작 등 서비스 시작


4

서버 프로세스를 종료하고 pid 파일이 업데이트되지 않은 경우 발생합니다. 가장 좋은 해결책은 Server.pid 파일을 삭제하는 것입니다 입니다.

명령을 사용하십시오

rm <path to file Server.pid>


4

gem install shutup

그런 다음 rails 프로젝트의 현재 폴더로 이동하여 실행하십시오.

shutup # 이것은 현재 실행중인 Rails 프로세스를 종료시킵니다

원할 때마다 'shutup'명령을 사용할 수 있습니다

점령 자 : 저는이 보석의 제작자입니다

참고 : rvm을 사용하는 경우 gem을 전체적으로 설치하십시오.

rvm @global do gem install shutup

3

다음과 같은 방법으로 서버를 일시 중지했을 수 있습니다. ^Z .

vim C:/Sites/folder/Pids/Server.pids출력 되는 4 개의 디지털 숫자 는 프로세스 ID입니다.

kill -9 processid프로세스 ID를 vim (또는 다른 편집기)이 출력 한 4 개의 숫자로 바꿔야합니다 .


서버를 올바르게 중지하는 올바른 방법은 무엇입니까? CTRL + C?
stt106

1

Windows를 사용하는 경우 'rails restart' 로 한 단계 만 수행 한 다음 'rails s' 를 다시 입력하면됩니다 .


1

Windows Rails 5.2에서이 파일을 삭제하십시오.

c:/Sites/<your_folder>/tmp/pids/server.pid

실행

rails s

다시.


1

운영: fuser -k -n tcp 3000

기본 포트 3000에서 실행중인 프로세스가 종료됩니다.


0

방금이 문제가 발생하여 다른 포트로 설정하려고 시도했지만 내가해야 할 유일한 것은 내 [app_directory]/tmp/pids/server.pid것을 삭제 하고 모든 것이 좋았습니다.


0

운영:

우분투 / 리눅스에서

 sudo rm /var/www/html/rails/WBPOCTEST/tmp/pids/server.pid

또는

 pkill -9 ruby

또는

lsof -wni tcp:3000

kill -9 pid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.