Linux

Linux 查詢使用特定連接埠的程式教學與範例

介紹如何在 Linux 系統中使用 netstatlsoffuser 指令,查詢占用指定通訊埠的程式。

netstat 指令

netstat 指令屬於 net-tools 套件的一部分,大部分 Linux 發行版都可以透過本身的套件管理系統安裝:

# 安裝 net-tools 套件(Ubuntu/Debian)
sudo apt-get install net-tools

# 安裝 net-tools 套件(RHEL/CentOS/Fedora)
sudo dnf install net-tools

以下是使用 netstat 搭配 grep 指令查詢目前 傾聽 80 連接埠程式的指令:

# 查詢傾聽 80 連接埠的程式
sudo netstat -ntpl | grep -w ':80'
tcp6       0      0 :::80                   :::*                    LISTEN      1231/nginx: master

這裡 netstat 所使用的參數與意義如下:

  • -n:以 IP 數字顯示位址。
  • -t:只顯示 TCP 連線。
  • -p:顯示行程名稱與 ID,需要 root 管理者權限才能看到所有資訊。
  • -l:只顯示傾聽的 sockets。

lsof 指令

lsof 指令可以透過 lsof 套件安裝:

# 安裝 lsof 套件(Ubuntu/Debian)
sudo apt-get install lsof

# 安裝 lsof 套件(RHEL/CentOS/Fedora)
sudo dnf install lsof

lsof-i 參數可以指定連接埠,查詢傾聽指定連接埠的程式:

# 查詢傾聽 80 連接埠的程式
sudo lsof -i :80
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1231     root    6u  IPv4  26556      0t0  TCP *:http (LISTEN)
nginx   1231     root    7u  IPv6  26557      0t0  TCP *:http (LISTEN)
nginx   1243 www-data    6u  IPv4  26556      0t0  TCP *:http (LISTEN)
nginx   1243 www-data    7u  IPv6  26557      0t0  TCP *:http (LISTEN)
nginx   1244 www-data    6u  IPv4  26556      0t0  TCP *:http (LISTEN)
nginx   1244 www-data    7u  IPv6  26557      0t0  TCP *:http (LISTEN)

也可以限定通訊協定,例如只列出 TCP 協定傾聽 80 連接埠的程式:

# 查詢 TCP 協定傾聽 80 連接埠的程式
sudo lsof -i TCP:80

fuser 指令

fuser 指令屬於 psmisc 套件的一部分,大部分 Linux 發行版都可以透過本身的套件管理系統安裝:

# 安裝 psmisc 套件(Ubuntu/Debian)
sudo apt-get install psmisc

# 安裝 psmisc 套件(RHEL/CentOS/Fedora)
sudo dnf install psmisc

fuser 可以用來查詢指定協定與通訊埠的程式,例如查詢 TCP 協定傾聽 80 連接埠的程式:

# 查詢 TCP 協定傾聽 80 連接埠的程式 PID
sudo fuser 80/tcp
80/tcp:               1231  1243  1244

接著透過 ps 指令查詢 PID 對應的程式名稱:

# 查詢指定 PID 的程式名稱
ps -p 1231 -o comm=
nginx

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

10 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

10 個月 ago