查看linux進程埠
A. linux怎麼查看某個進程佔用的埠
步驟一】lsof -i
lsof -i 用以顯示符合條件的進程情況,lsof(list open files)是一個列出當前系統打開文件的工具。以root用戶來執行lsof -i命令,如下圖
【步驟二】lsof -i:埠號
lsof -i:埠號,用於查看某一埠的佔用情況,比如查看22號埠使用情況,lsof -i:22,如下圖
【步驟三】netstat -tunlp
netstat -tunlp用於顯示tcp,udp的埠和進程等相關情況,如下圖
4
【步驟四】netstat -tunlp|grep 埠號
netstat -tunlp|grep 埠號,用於查看指定埠號的進程情況,如查看22埠的情況,netstat -tunlp|grep 22,如下圖
B. linux 查看埠佔用
在項目的部署的時候,會遇到埠被佔用的情況,需要我們先停下佔用埠的進程,然後才能開啟新的服務來使用這個埠,那麼在linux上怎麼查看埠被什麼進程佔用呢?
一、常用命令:
1,lsof -i:埠號
2,netstat -tunlp|grep 埠號
這兩個命令都可以查看埠被什麼進程佔用。
lsof -i 用以顯示符合條件的進程情況,lsof(list open files)是一個列出當前系統打開文件的工具。以root用戶來執行lsof -i命令,如下圖
lsof輸出的每列的意義是:
COMMAND:進程的名稱或者進程開啟的方式
PID:進程id
USER:進程所有者
FD:文件描述符
TYPE:協議類型
DEVICE:埠號
SIZE/OFF:偏移
NODE:協議名
NAME:節點名
lsof -i:埠號,用於查看某一埠的佔用情況,比如查看22號埠使用情況,lsof -i:22
netstat -tunlp用於顯示tcp,udp的埠和進程等相關情況
命令里的t,u,n,l,p均有不同含義:
-t 僅顯示和tcp相關的
-u 僅顯示和udp相關的
-n 不限時別名,能顯示數字的全部轉換為數字
-l 僅顯示出於Listen(監聽)狀態的
-p 顯示建立這些連接的程序名
netstat -tunlp|grep 埠號,用於查看指定埠號的進程情況,如查看22埠的情況,netstat -tunlp|grep 22
C. linux 如何查看服務和埠
netstat/lsof
netstat命令用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各埠的網路連接情況
-a顯示一個所有的有效連接信息列表(包括已建立的連接,也包括監聽連接請求的那些連接)
-n顯示所有已建立的有效連接
-ttcp協議
-uudp協議
-l查詢正在監聽的程序
-p顯示正在使用socket的程序識別碼和程序名稱
例如:netstat-ntupl|grepprocessname
如何只查詢tomcat的連接?
netstat-na|grepESTAB|grep80|wc-l
netstat-na|grepESTAB|grep8080|wc-l
常用埠介紹:
埠:21
服務:FTP伺服器所開放的埠,用於上傳、下載。
埠:22
服務:ssh
埠:80
服務:HTTP用於網頁瀏覽
埠:389
服務:LDAPILS輕型目錄訪問協議和
埠:443
服務:網頁瀏覽埠能提供加密和通過安全埠傳輸的另一種HTTP
埠:8080
服務:代理埠
打開終端,執行如下命令,查看各進程佔用埠情況:
#ps-ef|wc-l//查看後台運行的進程總數
#ps-fucsvn//查看csvn進程
#netstat-lntp//查看開啟了哪些埠
#netstat-r//本選項可以顯示關於路由表的信息
#netstat-a//本選項顯示一個所有的有效連接信息列表
#netstat-an|grep8080
#netstat-na|grep-ilisten//可以看到目前系統偵聽的埠號
#netstat-antup//查看已建立的連接進程,所佔用的埠。
netstat-anp|grep1487
lsof-i:1487
D. linux常用命令查看埠號
Linux查看程序埠佔用情況
使用命令:
ps -aux | grep tomcat
發現並沒有8080埠的Tomcat進程。
使用命令:netstat –apn
查看所有的進程和埠使用情況。發現下面的進程列表,其中最後一欄是PID/Program name
發現8080埠被PID為9658的java進程佔用。
進一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 查看
就可以明確知道8080埠是被哪個程序佔用了!然後判斷是否使用KILL命令幹掉! 《Linux就該這么學》學習更多命令。
方法二:直接使用 netstat -anp | grep portno
即:netstat -anp|grep 8080
E. linux如何查看埠號
1、列出所有埠 #netstat -a
2、列出所有 tcp 埠 #netstat -at
3、列出所有 udp 埠 #netstat -au
4、只顯示監聽埠 #netstat -l
5、只列出所有監聽 tcp 埠 #netstat -lt
6、只列出所有監聽 udp 埠 #netstat -lu
7、列出所有監聽 UNIX 埠 #netstat -lx
8、顯示所有埠的統計信息 #netstat -s
9、顯示 TCP 或 UDP 埠的統計信息 #netstat -st 或 -su
10、 輸出中顯示 PID 和進程名稱 #netstat -p
11、netstat 輸出中不顯示主機,埠和用戶名 (host, port or user)
F. linux如何查看埠
x使用過程中,需要了解當前系統開放了哪些埠,並且要查看開放這些埠的具體進程和用戶,可以通過netstat命令進行簡單查詢
netstat命令各個參數說明如下:
-t : 指明顯示TCP埠
-u : 指明顯示UDP埠
-l : 僅顯示監聽套接字(所謂套接字就是使應用程序能夠讀寫與收發通訊協議(protocol)與資料的程序)
-p : 顯示進程標識符和程序名稱,每一個套接字/埠都屬於一個程序。
-n : 不進行DNS輪詢,顯示IP(可以加速操作)
即可顯示當前伺服器上所有埠及進程服務,於grep結合可查看某個具體埠及服務情況··
netstat -ntlp //查看當前所有tcp埠·
netstat -ntulp |grep 80 //查看所有80埠使用情況·
netstat -ntulp | grep 3306 //查看所有3306埠使用情況·
Linux查看程序埠佔用情況
使用命令:
ps -aux | grep tomcat
發現並沒有8080埠的Tomcat進程。
使用命令:netstat –apn
查看所有的進程和埠使用情況。發現下面的進程列表,其中最後一欄是PID/Program name
發現8080埠被PID為9658的Java進程佔用。
進一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 查看
就可以明確知道8080埠是被哪個程序佔用了!然後判斷是否使用KILL命令幹掉!
方法二:直接使用 netstat -anp | grep portno
即:netstat -anp|grep 8080
netstat -anp|grep 8080 --> tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 28500/java
ps -aux | grep 28500 --> r/local/tomcat9-jforum/tomcat
安裝lsof list open files//---也可以 netstat -tunlp|grep 埠號 netstat -anp|grep 埠號
yum install 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 用以顯示符合條件的進程情況
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4地址
service --> /etc/service中的 service name (可以不止一個)
port --> 埠號 (可以不止一個)
lsof -i //顯示所有打開的埠
lsof -i:80 //顯示所有打開80埠的進程
lsof -i -U //顯示所有打開的埠和UNIX domain文件
其實我一般這樣用:
[root@VM_39_230_centos bin]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 16422 mysql 19u IPv6 148794 0t0 TCP *:mysql (LISTEN)
mysqld 16422 mysql 39u IPv6 643698 0t0 TCP localhost:mysql->localhost:36582 (ESTABLISHED)
mysqld 16422 mysql 45u IPv6 643699 0t0 TCP localhost:mysql->localhost:36584 (ESTABLISHED)
mysql
G. Linux下查看一個進程佔用了哪個埠的方法
時候需要在Linux下查看一個進程佔用了那個埠,但是只知道進程大致的名稱,比如要查看hadoop的namenode在哪個埠上運行,以便在eclipse中連接。
首先用ps命令查看進程的id:
復制代碼代碼如下:
$ ps -ef | grep Name
其中每一行(很長的時候會佔用若干行)的第二個欄位就是進程的id。
當然,對於在java虛擬機中運行的進程,比如hadoop的守護進程,可以直接用jsp命令查看:
$ jps | grep Name
或者已經知道進程的確切名稱,可以用pidof查看:
$ pidof Name
查看到進程id之後,使用netstat命令查看其佔用的埠:
$ netstat -nap | grep pid
H. linux查看埠號命令
-t : 指明顯示TCP埠
-u : 指明顯示UDP埠
-l : 僅顯示監聽套接字(所謂套接字就是使應用程序能夠讀寫與收發通訊協議(protocol)與資料的程序)
-p : 顯示進程標識符和程序名稱,每一個套接字/埠都屬於一個程序。
-n : 不進行DNS輪詢,顯示IP(可以加速操作)
即可顯示當前伺服器上所有埠及進程服務,於grep結合可查看某個具體埠及服務情況··
netstat -ntlp //查看當前所有tcp埠·
netstat -ntulp |grep 80 //查看所有80埠使用情況·
netstat -an | grep 3306 //查看所有3306埠使用情況·
查看一台伺服器上面哪些服務及埠
netstat -lanp
查看一個服務有幾個埠。比如要查看mysqld
ps -ef |grep mysqld
查看某一埠的連接數量,比如3306埠
I. linux 怎麼查看程序的埠
使用lsof命令
具體方法:
lsof
-i
:port_number
|grep
"(LISTEN)"
-i是用來查找和網路相關的文件,":"號是必須的,它是標志你查找的是一個埠。port_number就是你要查找的埠號,譬如你要查找是否
有程序佔用了oracle的監聽埠1521,就可以使用lsof
-i
:1521
|grep
"(LISTEN)"。如果有程序已經佔用了,那麼下面列印的第二個欄位就是該程序的進程id,第一個欄位是進程的名字。
如果只有losf
-i
:port_number可能會查到很多應用程序,但這些程序實際並沒有佔用你指定的埠,這些埠只是連接到本機器或者別的機器的該埠。所以要grep
"(LISTEN)「,因為一個埠只可能被一個程序佔用的,所以這種方法是可靠的。
J. linux怎麼查看進程佔用埠
1. ss命令簡介
ss 是 Socket Statistics 的縮寫。ss 命令可以用來獲取 socket 統計信息,它顯示的內容和 netstat 類似。但 ss 的優勢在於它能夠顯示更多更詳細的有關 TCP 和連接狀態的信息,而且比 netstat 更快。當伺服器的 socket 連接數量變得非常大時,無論是使用 netstat 命令還是直接 cat /proc/net/tcp,執行速度都會很慢。ss 命令利用到了 TCP 協議棧中 tcp_diag。tcp_diag 是一個用於分析統計的模塊,可以獲得 Linux 內核中第一手的信息,因此 ss 命令的性能會好很多。
ss命令簡介
2. 常用選項
-h, --help 幫助
-V, --version 顯示版本號
-t, --tcp 顯示 TCP 協議的 sockets
-u, --udp 顯示 UDP 協議的 sockets
-x, --unix 顯示 unix domain sockets,與 -f 選項相同
-n, --numeric 不解析服務的名稱,如 "22" 埠不會顯示成 "ssh"
-l, --listening 只顯示處於監聽狀態的埠
-p, --processes 顯示監聽埠的進程(Ubuntu 上需要 sudo)
-a, --all 對 TCP 協議來說,既包含監聽的埠,也包含建立的連接
-r, --resolve 把 IP 解釋為域名,把埠號解釋為協議名稱
3. 常見用法
如果不添加選項 ss 命令默認輸出所有建立的連接(不包含監聽的埠),包括 tcp, udp, and unix socket 三種類型的連接:
3.1 查看前5名的連接:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 20040 * 20041
u_str ESTAB 0 0 * 20030 * 20031
u_str ESTAB 0 0 * 20044 * 20043
u_str ESTAB 0 0 /run/dbus/system_bus_socket 18592 * 18591
3.2 查看主機的監聽埠
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:9016 :
LISTEN 0 128 127.0.0.1:9017 :
LISTEN 0 100 127.0.0.1:25 :
LISTEN 0 128 127.0.0.1:9018 :
LISTEN 0 128 127.0.0.1:1723 :
LISTEN 0 128 127.0.0.1:9019 :
3.3 linux查看tcp連接
ESTAB 0 0 ::1:ssh ::1:53238
ESTAB 0 0 ::1:53278 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53280
ESTAB 0 0 ::1:53288 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53296
ESTAB 0 0 ::1:53294 ::1:ssh
ESTAB 0 0 ::1:48456 ::1:ssh
ESTAB 0 0 ::1:53286 ::1:ssh
ESTAB 0 0 ::1:53292 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53272
linux查看tcp連接
3.4 解析IP和埠號
使用-r選項
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 my_public_ip:9016 :
LISTEN 0 128 my_public_ip:9017 :
LISTEN 0 100 localhost:smtp :
LISTEN 0 128 my_public_ip:9018 :
LISTEN 0 128 my_public_ip:pptp :
LISTEN 0 128 my_public_ip:9019 :
linux查看監聽埠
3.5 輸出時帶進程名稱
使用-p選項
Total: 2340 (kernel 2365)
TCP: 2126 (estab 72, closed 23, orphaned 1, synrecv 0, timewait 2/0), ports 0
Transport Total IP IPv6
3.6 根據條件過濾輸出結果
可以通過語法過濾輸出結果,根據源IP、源埠、目標IP、目標埠
src源
dst目標
ss dst 172.16.26.33
ss dst 172.16.26.43:http
ss dst 172.16.26.43:443
3.7 根據源埠號范圍輸出:
根據目標埠號范圍輸出:
ss dport OP PORT
OP 可以代表以下任意一個:
<=le小於或等於某個埠號 >=ge大於或等於某個埠號==eq等於某個埠號!=ne不等於某個埠號>gt大於某個埠號<lt小於某個埠號
比如:
輸出源埠號小於8080的連接狀態
或者
3.8 根據TCP 的狀態進行過濾
ss命令還可以根據TCP連接的狀態進行過濾,支持的 TCP 協議中的狀態有:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listening
closing
除了上面的 TCP 狀態,還可以使用下面這些狀態:
狀態輸出結果 all輸出所有TCP狀態。connected輸出已經建立連接的TCP狀態。synchronized輸出同步狀態的連接。bucket輸出maintained的狀態,如:time-wait 和 syn-recv。big輸出與bucket相反的狀態。
只輸出ipv4狀態:
只輸出ipv6狀態:
輸出ipv4監聽狀態:
3.9 根據TCP狀態和埠號進行過濾
輸入出ipv4協議下的ssh監聽狀態:
或者
要麼使用轉義小括弧,要麼使用單引號
查看所有已經建立TCP三次握手的HTTP連接:
查看所有正在進程的ssh連接:
4. 總結
ss 命令功能豐富並且性能出色,完全可以替代 netsate 命令。已經成為我們日常查看 socket 相關信息的利器。未來netstat已經慢慢被ss取代。
https://www.linuxrumen.com/cyml/821.html