ホーム 技術ログ

go runコマンドでポート競合が起きた時の対処法

2019年11月2日

go runと実行した時にポートが既に使用中でアプリが起動できないことがある。

$ go run main.go
[ERRO] 2019/11/02 14:41 listen tcp :8080: bind: address already in use

このようになってしまった場合は指定されているポートが何で専有されているかを確認する必要がある。
その際に役立つコマンドがlsofコマンドである。
今回のように8080がすでに使用されていると出た場合は下記のように使用する。

$ sudo lsof -i:8080
main    2170 ubuntu    3u  IPv6  24710      0t0  TCP *:http-alt (LISTEN)

上記のような場合は8080がubuntuユーザーによってプロセスIP 2170で使用されているとわかる。
基本的にはそのプロセスが不要であれば

$ sudo kill -9 PID

とでプロセスを落とせばよい。
ただ、場合によっては落としたプロセスがすぐに立ち上がってしまう、そしてそのプロセスは正常に動作しないこともある。
本来ならば、プロセス同士の依存関係などを探って、親子プロセスから落としていくと解決することもあるが、許されるのであれば

$ sudo reboot

でサーバーを再起動してしまうと解決することが多い。
少々乱暴ではあるが、Windowsだって再起動で治ることが多いのはこういうことがバックグラウンドで起こっているためだ。

Pocket
LinkedIn にシェア

エンジニアにおすすめできる本

Card image cap
リーダブルコード

より良いコードを書くためのシンプルで実践的なテクニック

Card image cap
Webを支える技術

HTTP,URI,HTML,そしてREST

Card image cap
誰でもPythonで作れる

儲かるAIとソフトウェアの作り方

Card image cap
プログラマが知るべき97のこと

現場で使える実践哲学のマスターピース

Card image cap
情熱プログラマー

時代を超えて。ソフトウェア開発者の幸せな生き方

Card image cap
アジャイルサムライ

プログラミング達人開発者への道

Card image cap
Rubyを作った男 まつもとゆきひろ

コードの世界 スーパー・プログラマになる14の思考法

ご提供 sponsor
 

Meee!(ミー)は、ビジネスからプライベート利用まで、個人のスキルを気軽に売り買いできるスキルマーケットです。カテゴリや居住地から、検索することが可能です。

 

ランゲージエクスチェンジは、ネイティブスピーカーと気軽にマッチングできる言語交換プラットフォームです。あなたの地元に住む外国人を探したり、留学や海外移住の前に、現地のネイティブスピーカーと繋がることもできます!

宣伝
 

りょすけトークchは、仕事や私生活をより豊にするYouTubeチャンネルです。文献(本、映画、論文)から役に立つ情報をまとめ、生涯にわたり役に立つ哲学をお届けしています。是非、チャンネル登録してみてね

-ホーム, 技術ログ

Copyright© offブログ! , 2021 All Rights Reserved Powered by AFFINGER5.