본문 바로가기

IT/RUBY

Ruby On Rails, 서버 강제 종료 방법

1. 서버가 이미 기동 중입니다.

 

・ Ruby와 Rails로 할 때, 서버가 멈췄지만, 프로세스상에서 기동 중인 경우가 간혹 있습니다.

 

・ 그럴 때는 Ctrl + C를 눌러도 서버가 멈추지 않아서 당황했던 기억이 있습니다...

 

$ rails s
=> Booting Puma
=> Rails 5.2.2 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 5, max threads: 100
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
^C^C^C

 

^C^C를 보면 마치 저를 비웃는 것 같네요! 무시하고 서버를 다시 기동시키면 응 이미 작동 중 ^C^

 

$ rails s
=> Booting Puma
=> Rails 5.2.2 application starting in development 
=> Run `rails server -h` for more startup options
A server is already running. Check /프로젝트명/tmp/pids/server.pid.
Exiting

2. 서버 강제 종료 방법

 

리눅스 명령어를 사용하여 강제 종료 시키겠습니다.

 

$ ps ax | grep rails
82374 s001  S+     0:00.00 grep rails

$ kill -9 82374

 

・ 이걸로 해결되면 다시 레일즈를 기동시키면 됩니다. 하지만 아래와 같이 안될 경우도 있습니다.

 

-bash: kill: (82374) - No such process

 

・ 그렇다면, lsof를 이용하여 강제 종료시키면 됩니다.

 

$ lsof -wni tcp:3000
COMMAND  PID   USER     FD   TYPE             DEVICE SIZE/OFF NODE NAME
ruby    85764 bellstone 22u  IPv4 0x47ffcee210575189      0t0  TCP *:hbci (LISTEN)
ruby    85764 bellstone 27u  IPv4 0x47ffcee20bde5809      0t0  TCP 127.0.0.1:hbci->127.0.0.1:49679 (ESTABLISHED)

$ kill -9 85764

$ rails s
=> Booting Puma
=> Rails 5.2.2 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 5, max threads: 100
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

 

・ 위의 두 방법이라면, 대부분 서버를 강제 종료할 수 있었습니다. 자주 사용하지만, 잊어버리는 ㅠㅠ

 

・ 그럼 끝!