注:以前は別の答えがありました。より焦点を絞った新しい回答に置き換えましたが、まだ探している人のために古い回答を一番下に残しました。
新しい答え:
このエラーは、前回サーバーを実行したときに、サーバーを強制終了せずにターミナルを閉じたために発生します。これは、頭を切り落とされたニワトリのように、「頭なしで走る」と呼ばれていると思います。そのため、誰も監視していなくても、サーバーはまだ実行されており、ポート 9393 と呼ばれる「スペース」を占有しています。新しいサーバーを起動しようとすると、既に 1 つのサーバーが実行されています。駐車場のようなものです。そこにはすでに車があるため、同じ場所で新しい車を手放すことはできません。
これが私がエラーを再現した方法です。sinatra サーバーを起動し、最初にサーバーを強制終了せずに端末を閉じ、新しい端末を開き、別のサーバーを起動しようとしました。
Taras-MacBook-Air:SurveyDBCGroupProject tlroys$ shotgun
== Shotgun/Thin on http://127.0.0.1:9393/
Thin web server (v1.6.1 codename Death Proof)
Maximum connections set to 1024
Listening on 127.0.0.1:9393, CTRL+C to stop
/Users/tlroys/.rvm/gems/ruby-1.9.3-p484/gems/eventmachine-1.0.3/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
#deleted stack trace
駐車場に車が止まっていたらどうする?レッカー車に電話して、運転手に車のナンバー プレートの番号を伝え、レッカー移動するよう伝えます。
車のナンバー プレート番号を調べるには、Stack Overflow で見つけた次の一連のコマンドを実行します。
ps aux | grep ruby
これにより、「駐車場」を占有している「車」のナンバー プレート番号とも呼ばれるプロセス ID が検出されます。注: 私の「スポット」を占有しているサーバーは、実際にはプログラミング言語 ruby を使用して作成されたサーバーです。ナンバー プレートの番号を調べてシボレーを探している人に伝えることができます。周りに他の車がない限り、適切な車を見つけてくれます。この「ゾンビ サーバー」は私のコンピューターで実行されている唯一の ruby プロセスであるため、grep コマンドに ruby を探すように指示すると、正しいプロセス ID/ナンバー プレート番号が得られます。より具体的に言いたいのなら、おそらく言うことができます
ps aux | grep shotgun
同じ結果が得られます。
-出力は次のようになります。リストには 2 つのものが含まれている必要があります。
27235 ?? S 0:00.72 /Users/tlroys/.rvm/gems/ruby-1.9.3-p484/bin/shotgun
27393 s000 S+ 0:00.00 grep ruby
最初のものは、探している実際の「ゾンビ サーバー」です。2 番目の点は面白いことに、ruby という単語を含むすべてのプロセスを探しているので、ruby という単語を含むすべてのプロセスを探しているプロセスを見つけます。ハハ。
最初のプロセスを終了します。次のコマンドで。数字を実際のプロセス ID に変更してください。
kill -9 27235
27235 を表示される実際のプロセス ID に変更する必要がありますが、アイデアは得られます。レッカー車が来て、車を廃品置き場に引きずり込み、その場所を自由に使えるようにしてくれました。
古い答え:
私はまったく同じ問題を抱えていました.sinatraアプリを実行しているポートでRubyプロセスが実行されていたためです。以下は、エラー (簡潔にするためにスタック トレースを削除したもの) と、何が問題なのかを突き止めて修正するために実行したコマンドです。
つまり、sinatra アプリを起動しようとしたところ、ポートが使用中かルート権限が必要であると表示されました。次に、Tin Man の lsof コマンド (上記を参照) を使用して、使用中のポートを調べました。
ruby がポート 9393 で実行されていることがわかりました。killall で kill しました。シナトラアプリを再起動してみました。出来た。
Taras-MacBook-Air:sinatra_sandbox tlroys$ bundle exec shotgun config.ru
The source :rubygems is deprecated because HTTP requests are insecure.
Please change your source to 'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
== Shotgun/Thin on http://127.0.0.1:9393/
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 127.0.0.1:9393, CTRL+C to stop
/Users/tlroys/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
Taras-MacBook-Air:sinatra_sandbox tlroys$ lsof -i TCP | grep LISTEN
ruby 59176 tlroys 9u IPv4 0xffffff8012fbdc00 0t0 TCP localhost:9393 (LISTEN)
Taras-MacBook-Air:sinatra_sandbox tlroys$ killall ruby
Taras-MacBook-Air:sinatra_sandbox tlroys$ bundle exec shotgun config.ru
The source :rubygems is deprecated because HTTP requests are insecure.
Please change your source to 'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
Shotgun/Thin on http://127.0.0.1:9393/
Thin web server (v1.5.0 codename Knife)
Maximum connections set to 1024
Listening on 127.0.0.1:9393, CTRL+C to stop