実行環境
- macOS Mojave 10.14.5
- ruby 2.6.3
- sinatra 2.0.5
- VSCode2 1.37.1
エラー文言と状況
*プログラミング初学者のため、誤りがあればご指摘いただけますと幸いです。
誤って複数回やらかしたのでメモに残します。
sinatraで作ったwebアプリ「app.rb(仮)」をブラウザ上で見ようとサーバーを起動するも、なぜかエラーを吐かれました。
$ ruby app.rb
== Sinatra (v2.0.5) has taken the stage on 4567 for development with backup from Thin
Thin web server (v1.7.2 codename Bachmanity)
Maximum connections set to 1024
Listening on localhost:4567, CTRL+C to stop
Stopping ...
== Sinatra has ended his set (crowd applauds)
Traceback (most recent call last):/Users/shinya/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:531:in `start_server'
/Users/shinya/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:531:in `start_tcp_server': no acceptor (port i
s in use or requires root privileges) (RuntimeError)
エラー文の最後に port is in use
と出ているので
Chromeからlocalhost:4567
へ接続すると、すでに他のアプリ「alt.rb(仮)」でサーバーに接続中。
しかしターミナルでは通常利用するctrl + c
では当該サーバーを停止できませんでした。
プロセスを調べてkill
使用中のポートを確認し閉じる必要があるので、以下を入力。
ps aux | grep ruby
$ ps aux | grep ruby
shinya 5348 0.6 1.6 4559084 135328 ?? S 10:34PM 0:24.32 /Users/shinya/.rbenv/versions/2.6.3/bin/ruby /Users/shinya/.rbenv/versions/2.6.3/bin/solargraph socket --port 0
shinya 5197 0.0 0.3 4387360 21360 ?? S 10:33PM 0:00.63 ruby alt.rb
shinya 6229 0.0 0.0 4277256 804 s002 S+ 11:20PM 0:00.00 grep ruby
alt.rbがポート番号(PID)「5197」を使用中と出ています。
次にkill -9 当該PID
と入力してポートをkillします。
$ kill -9 5197 ←「5197」にはご自身のターミナルに表示されたポート番号(PID)を入力してください
killできた場合は特にレスポンスがないはず。
今回は割と簡単に解決できて良かったです。