在Linux系統中,了解哪些程序正在運行以及它們監聽的端口是非常重要的。這不僅有助于系統管理員監控系統狀態,還能幫助排查網絡問題、優化性能以及確保系統安全。本文將詳細介紹如何在Linux系統中檢查運行中的程序及其監聽的端口。
ps
命令查看運行中的程序ps
命令是Linux中最常用的查看進程狀態的工具之一。通過ps
命令,我們可以列出當前系統中正在運行的進程。
ps aux
a
:顯示所有用戶的進程。u
:顯示進程的詳細信息,包括用戶、CPU和內存使用情況等。x
:顯示沒有控制終端的進程。USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 169316 9384 ? Ss Oct01 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S Oct01 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< Oct01 0:00 [rcu_gp]
...
USER
:進程的所有者。PID
:進程ID。%CPU
:CPU使用率。%MEM
:內存使用率。VSZ
:虛擬內存大小。RSS
:物理內存大小。TTY
:進程關聯的終端。STAT
:進程狀態。START
:進程啟動時間。TIME
:進程占用CPU的時間。COMMAND
:啟動進程的命令。如果你想查找特定的進程,可以使用grep
命令進行過濾。例如,查找所有與nginx
相關的進程:
ps aux | grep nginx
netstat
命令查看監聽的端口netstat
命令用于顯示網絡連接、路由表、接口統計信息等。通過netstat
,我們可以查看系統中哪些端口正在被監聽。
netstat -tuln
-t
:顯示TCP連接。-u
:顯示UDP連接。-l
:顯示監聽中的端口。-n
:以數字形式顯示地址和端口號。Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
...
Proto
:協議類型(TCP或UDP)。Recv-Q
:接收隊列中的數據量。Send-Q
:發送隊列中的數據量。Local Address
:本地地址和端口。Foreign Address
:遠程地址和端口。State
:連接狀態(如LISTEN
表示監聽中)。如果你想查看特定端口的監聽情況,可以使用grep
命令進行過濾。例如,查看端口80
的監聽情況:
netstat -tuln | grep :80
ss
命令查看監聽的端口ss
命令是netstat
的替代工具,功能更強大,性能更好。它同樣可以用于查看系統中監聽的端口。
ss -tuln
-t
:顯示TCP連接。-u
:顯示UDP連接。-l
:顯示監聽中的端口。-n
:以數字形式顯示地址和端口號。Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:631 0.0.0.0:*
tcp LISTEN 0 128 :::80 :::*
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*
...
Netid
:網絡類型(如tcp
、udp
)。State
:連接狀態(如LISTEN
表示監聽中)。Recv-Q
:接收隊列中的數據量。Send-Q
:發送隊列中的數據量。Local Address:Port
:本地地址和端口。Peer Address:Port
:遠程地址和端口。同樣,你可以使用grep
命令過濾特定端口。例如,查看端口22
的監聽情況:
ss -tuln | grep :22
lsof
命令查看程序和端口lsof
命令用于列出打開的文件。在Linux中,網絡連接也被視為文件,因此lsof
可以用來查看哪些程序正在使用哪些端口。
lsof -i
-i
:顯示與網絡相關的文件。COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root 3u IPv4 12345 0t0 TCP *:ssh (LISTEN)
nginx 5678 www 4u IPv4 23456 0t0 TCP *:http (LISTEN)
...
COMMAND
:進程名稱。PID
:進程ID。USER
:進程的所有者。FD
:文件描述符。TYPE
:文件類型(如IPv4
、IPv6
)。DEVICE
:設備號。SIZE/OFF
:文件大小或偏移量。NODE
:節點號。NAME
:文件名或網絡地址。你可以使用grep
命令過濾特定端口。例如,查看端口80
的使用情況:
lsof -i :80
fuser
命令查看端口占用fuser
命令用于顯示哪些進程正在使用指定的文件或端口。
fuser -n tcp 80
-n
:指定協議類型(如tcp
、udp
)。80
:端口號。80/tcp: 1234 5678
1234
、5678
:使用該端口的進程ID。如果你想殺死占用某個端口的進程,可以使用-k
選項:
fuser -k -n tcp 80
在Linux系統中,檢查運行中的程序及其監聽的端口是系統管理和網絡排查的重要任務。通過ps
、netstat
、ss
、lsof
和fuser
等命令,我們可以輕松地獲取這些信息。掌握這些工具的使用方法,將有助于你更好地管理和維護Linux系統。
希望本文對你有所幫助!如果你有任何問題或建議,歡迎在評論區留言。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。