Linux でポートの占有状況を確認するにはlsofとnetstatコマンドを使用できます。


lsof

lsof(list open files)は、現在システムで開いているファイルを一覧表示するツールです。

lsof ポート占有状況の確認構文形式:

lsof -i:端口号

実例

サーバーの8000ポートの占有状況を確認:

# lsof -i:8000
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nodejs  26993 root   10u  IPv4 37999514      0t0  TCP *:8000 (LISTEN)

8000ポートが既に軽量nodejsサービスに占有されていることがわかります。

lsof -i の実行には root ユーザーの権限が必要です。下図のとおり:

その他の lsof コマンドは以下のとおり:

lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件

netstat

netstat -tunlptcp、udp のポートやプロセスなどに関する状況を表示するために使用します。

netstat ポート占有状況の確認構文形式:

netstat -tunlp | grep 端口号
  • -t (tcp) tcp関連オプションのみ表示
  • -u (udp) udp関連オプションのみ表示
  • -n エイリアスの表示を拒否し、数値で表示できるものはすべて数値に変換
  • -l Listen(待機)状態のサービスのみ一覧表示
  • -p 関連リンクを確立したプログラム名を表示
例えば8000ポートの状況を確認するには、次のコマンドを使用します:
# netstat -tunlp | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      26993/nodejs   

その他のコマンド:

netstat -ntlp   //查看当前所有tcp端口
netstat -ntulp | grep 80   //查看所有80端口使用情况
netstat -ntulp | grep 3306   //查看所有3306端口使用情况

kill

ポートを占有しているプロセスを確認した後、対応するプロセスを終了するには kill コマンドを使用できます:

kill -9 PID

上記の例では、8000ポートに対応するPIDが26993であることを確認しました。次のコマンドでプロセスを終了します:

kill -9 26993