(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【RHEL】netstatで開いているポート番号とプロセスを確認する

スポンサーリンク

やりたいこと

以下のようにポート競合エラーが起きたため、サーバ上で開いているポート番号とそのポート番号を利用しているプロセスを確認する。

# docker-compose up xx
ERROR: for xx Cannot start service xx: b'driver failed programming external connectivity on endpoint..: Error starting userland proxy: listen tcp 0.0.0.0:9090: bind: address already in use'
ERROR: Encountered errors while bringing up the project.
環境情報
  • Red Hat Enterprise Linux Server 7.5

やり方

以下コマンドで確認を行う。

# netstat -apn

形式は以下のように標準出力される。

tcp6 0 0 :::9090 :::* LISTEN 1/systemd

以下、補足です。

補足

コンテナを起動したところ以下エラーとなったため

# docker run -d -p 9090:9090 prom/prometheus
...
docker: Error response from daemon: driver failed programming external connectivity on endpoint xx : Error starting userland proxy: listen tcp 0.0.0.0:9090: bind: address already in use.

同コマンドで調査しました。

標準的にインストールされているnetstatを利用しましたが、lsofが利用できる場合は以下のようにポート番号を指定することでプロセスを発行しているコマンドの特定も可能です。

$ lsof -i :9090
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
app1    17130 root    3u  IPv4  64665      0t0  TCP *:9090 (LISTEN)

尚、プロセス番号が分かれば以下にてコマンドの実態を抑えることもできます。
$ ls -l /proc/17130/exe
lrwxrwxrwx 1 root root 0 Mar 17 07:37 /proc/17130/exe -> /usr/bin/app1
|

以上、ご参考になれば幸いです。