서버가 이미 실행 중입니다. … / tmp / pids / server.pid를 확인하십시오. 종료-레일


80
..$ 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

Rails 초보자가 이것을 해결하는 가장 쉬운 방법은 무엇입니까?



temp폴더를 삭제 하면 문제를 해결할 수 있습니다.
shah

답변:


168

server.pid파일을 삭제할 수 있습니다 .

rm /your_project_path/tmp/pids/server.pid

그밖에:

OSX에서 시도하십시오.

sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000

또는 Linux :

ps -aef | 그렙 레일

또는

lsof -wni tcp:3000

사용하여 프로세스를 종료

kill -9 PID (eg,2786)

1
Nitpicking-하지만 iOS가 아닌 OSX를 의미한다고 생각합니다. @SCraig 이것은 명령 줄에서 수행됩니다.
jmknoll

1
서버 .pid 파일을 제거했지만 여전히 문제가 있습니다. 내 시스템을 다시 시작하는 것은 이상적이지는 않지만 빠른 수정이었습니다.
Matt

매력처럼 일했다!
William Hampshire

선생님, 어떻게 방지 할 수 있습니까? 그것은 나에게 매우 자주 발생하며 수동으로 server.pid를 제거하는 것이 지루합니다.
Umagon 19.11.22

130

짧고 선명한 한 줄 명령이 처리됩니다.

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

7
lol, localhost : 3000에 열려있는 경우 먼저 브라우저 탭을 닫고 싶을 수 있습니다. 그렇지 않으면 브라우저가 종료 될 수 있습니다
TMin

누구든지 이것을 zsh에서 별칭으로 저장하려고 시도했지만 작동하지 않습니까?
stackjlei

때로는 내 서버가 종료되었지만 Ruby가 CPU를 최대로 사용했습니다. 이런 경우 언제 죽여야 ruby실행하여 top실행 후 PID를 얻고kill -9 <PID>
daveomcd

17

server.pid 실행중인 서버의 프로세스 ID 만 포함합니다.

당신이 할 경우 :

more /your_project_path/tmp/pids/server.pid

kill 명령으로 이전 서버를 중지하는 데 사용할 수있는 번호 (예 : 6745)를 얻게됩니다.

kill -9 6745

그런 다음 rm명령을 사용 하여 파일을 제거 할 수 있습니다.

rm /your_project_path/tmp/pids/server.pid

1
server.pid백틱으로 묶으 면 쉘이 server.pid를 실행하려고하지 않습니까?
mwfearnley

14

docker-compose를 사용하고 docker-compose.yml에 다음 volumes: - .:/myapp 이있는 경우 로컬 작업 영역이 컨테이너의 / myapp 폴더에 매핑됩니다.

/ myapp의 모든 항목은 정의 된 볼륨에 대해 삭제되지 않습니다.

./tmp/pids/server.pid로컬 컴퓨터에서 삭제할 수 있습니다 . 그러면 컨테이너의 / myapp에이 파일이 없습니다.


4
컨테이너가 시작될 때마다 해당 파일을 자동으로 삭제할 수도 있습니다 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'".. 참고 : github.com/docker/compose/issues/1393#issuecomment-99988242
leymannx

12

단순한:

이 경우 프로젝트의 루트 폴더로 이동하여 다음을 실행하십시오.

gem install shutup
shutup

이것은 현재 실행중인 프로세스를 찾아서 죽이고 pid 파일을 정리합니다.

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

rvm @global do gem install shutup

5

다음을 사용하여 문제를 해결할 수 있습니다.

kill -9 $(more /home/..name/rprojects/railsapp/tmp/pids/server.pid)

5

서버가 server.pid에 로그인 할 충분한 시간이 없도록 OS / 머신을 수동으로 끄는 것과 같이 강제로 서버를 끄는 경우가 있습니다.

한 가지 쉬운 방법은 tmp/pids/(콘솔에 표시된 디렉토리 )로 수동으로 이동하여 server.pid파일을 제거하는 것 입니다. 그런 다음 서버를 다시 시작 rails server하거나 rails s, 새 server.pid를 생성하고 개발을 계속할 수 있습니다.



3

path/to/your/rails/project/tmp/pids/server.pid파일을 엽니 다 .

거기에서 찾은 번호를 복사하십시오.

운영 kill -9 [PID]

어디 [PID]server.pid파일 에서 복사 한 번호는 ?

이렇게하면 실행중인 서버 프로세스가 종료되고 문제없이 서버를 다시 시작할 수 있습니다.


3

다음 명령을 사용하여 server.pid를 종료하십시오.

kill -9 `cat /root/myapp/tmp/pids/server.pid`

노트 : 콘솔 / 터미널에 표시되는 server.pid 경로를 사용하십시오.

감사합니다.


3

추가 정보는 Docker에서 응용 프로그램을 실행하는 컨텍스트에서.

docker-compose.yml 파일의 애플리케이션 컨테이너 자체 아래에서 다음 중 하나를 사용할 수 있습니다.

command: ["rm /your-app-path/tmp/pids/server.pid && bundle exec bin/rails s -p 3000 -b '0.0.0.0'"]

또는

command: ["rm /your-app-path/tmp/pids/server.pid; foreman start"]

하나의 사용을 참고 ;하거나 &&, &&경우에 종료 신호를 보낼 것이다 rm조기에 정지에 컨테이너를 강제로 파일을 찾기 위해 실패합니다. 를 사용 ;하면 계속 실행됩니다.

왜 이것이 처음에 발생합니까? 근거는 서버 (puma / thin / whatever)가 완전히 종료되지 않으면 호스트 시스템에 pid를 남겨 종료 오류를 유발한다는 것입니다.

호스트 시스템에서 파일을 수동으로 삭제하는 것보다 이식성을 위해 파일이 스크립팅 된 파일 또는 작성 파일 자체에 있는지 확인하는 것이 좋습니다.


3

First Find PID # -Rails 서버가 멈춘 곳

고정 된 PID를 찾으려면 이것을 실행하십시오.

cat ./tmp/pids/server.pid

다음과 같은 것을 반환합니다. 65829

그런 다음 해당 PID를 이십시오 =>kill 65829


2

이 명령 실행-

lsof -wni tcp:3000

그러면 다음 표가 표시됩니다.

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)

이 명령을 실행하고 위 표의 PID를 바꿉니다.

kill -9 PID

예:

kill -9 2552


0

이 문제에 대해

내가 한 일은 :

  • 아래에있는 Pids 폴더를 삭제합니다. app/tmp/
  • 그런 다음 현재 앱을 실행중인 터미널을 닫고 탭 (브라우저 창에서)을 닫습니다.

  • 그런 다음 폴더 내부로 이동하여 터미널을 다시 열고 실행하십시오. rails s

  • 그런 다음 응용 프로그램을 실행하는 새 탭이 열립니다.

0

먼저 파일 내부의 컴버를 복사 한 다음 제거합니다. rm /your_project_path/tmp/pids/server.pid 그런 다음 다시 만듭니다. touch /YOUR_PROJECT_PATH/tmp/pids/server.pid 그것은 나를 위해 일했습니다.


0

터미널에서 아래 명령을 실행하십시오 (Linux 전용)

ps aux | grep rails

그리고

kill -9 [pid]

또 다른 방법

lsof -wni tcp:3000

그리고

kill -9 [PID]

0

해결

이미 사용중인 주소 — bind (2)”Ruby on Rails의 500 오류

최근에 프로덕션 서버에서 Rails 앱을 실행 해 보았습니다. 작동하지 않았을뿐만 아니라 내 localhost : 3000 개발 서버도 망가졌습니다. Localhost는 빈 흰색 페이지 또는 500 오류 만로드합니다.

이를 해결하기 위해 두 가지 빠른 명령을 사용했습니다. 이것이 결과를 반환하지 않으면 다른 곳에서 해결책을 찾아야 할 수도 있지만 이것은 좋은 빠른 수정입니다.

lsof -wni tcp : 3000

루비 52179 rachelchervin 50u IPv6 0x ... 7aa3 0t0 TCP [:: 1] : hbci (LISTEN)
루비 52179 rachelchervin 51u IPv4 0x ... c7bb 0t0 TCP 127.0.0.1:hbci (듣기)
루비 52180 rachelchervin 50u IPv6 0x ... 7aa3 0t0 TCP [:: 1] : hbci (LISTEN)
루비 52180 rachelchervin 51u IPv4 0x ... c7bb 0t0 TCP 127.0.0.1:hbci (듣기)

이 명령은 현재 실행중인 모든 프로세스와 3000 포트에서 PID (프로세스 ID)를 보여줍니다. 제대로 닫히지 않은 기존 실행 프로세스가 있기 때문에 새 : 3000 서버를 시작할 수 없으므로 500 오류가 발생합니다.

죽일 52179

52180 죽이기

레일 s

Linux kill 명령을 사용하여 문제가되는 프로세스를 수동으로 중지했습니다. 4 개 이상인 경우 첫 번째 명령이 공백으로 돌아올 때까지 모든 PID에서 kill을 사용하십시오. 그런 다음 localhost : 3000 서버를 다시 시작하십시오. 이것은 컴퓨터를 손상시키지 않습니다! 단순히 localhost 포트의 기존 루비 프로세스를 종료합니다. 새 서버는 이러한 프로세스를 다시 시작합니다. 행운을 빕니다!


0

Windows 용 솔루션 :

  1. \ tmp \ pids \ server.pid에서 pid를 참조하십시오.
  2. 관리자 권한으로 cmd 열기
  3. taskkill / F / PID [1 단계의 pid]
  4. server.pid 파일 삭제
  5. 서버 다시 시작

0

우분투 20의 경우 kill -9 $(ps -aef | grep rails)

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