當前位置:首頁 » 操作系統 » linux查看進程佔用的埠

linux查看進程佔用的埠

發布時間: 2022-10-01 08:43:32

1. 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

2. 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

3. 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,如下圖

4. linux如何查看埠被哪個進程佔用

使用netstat 和lsof命令,並用grep來過濾你需要查看的埠。

例如查看tcp有哪些埠打開了:

netstat-a|greptcp

然後查看哪個進程佔用了這些埠:

lsof-i

如果要查看某個埠,比如80埠是哪個進程:

lsof-i|grep:80

5. linux如何查看埠被哪個進程佔用

在使用Linux系統的過程中,有時候會遇到埠被佔用而導致服務無法啟動的情況。比如HTTP使用80埠,但當啟動Apache時,卻發現此埠正在使用。
這種情況大多數是由於軟體沖突、或者默認埠設置不正確導致的,此時需要查看究竟哪個進程佔用了埠,來決定進一步的處理方法。

查看埠佔用情況的命令:lsof -i
1 [root@www ~]# lsof -i
2
3 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4 nginx 2333 root 6u IPv4 6242 TCP *:http (LISTEN)
5 nginx 2334 www 6u IPv4 6242 TCP *:http (LISTEN)
6 sshd 2349 root 3u IPv6 6283 TCP *:ndmp (LISTEN)
7 sshd 2349 root 4u IPv6 6286 TCP *:ssh (LISTEN)
這里返回了Linux當前所有打開埠的佔用情況。第一段是進程,最後一列是偵聽的協議、偵聽的IP與埠號、狀態。如果埠號是已知的常用服務(如80、21等),則會直接顯示協議名稱,如http、ftp、ssh等。

查看某一埠的佔用情況: lsof -i:埠號
1 [root@www ~]# lsof -i:21
2
3 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4 pure-ftpd 2651 root 4u IPv4 7047 TCP *:ftp (LISTEN)
5 pure-ftpd 2651 root 5u IPv6 7048 TCP *:ftp (LISTEN)
這里顯示出21號埠正在被pure-ftpd使用,狀態是listen。

結束佔用埠的進程:killall 進程名
雖然我們不建議用這種本末倒置的方法來解決沖突問題,但某些情況下還是可以直接結束掉佔用進程的(比如重啟Apache時進程沒有完全退出,導致重啟失敗)
1 [root@www ~]# killall pure-ftpd
這樣,所有的pure-ftpd進程都會被結束掉。
也可使用命令:

netstat -apn|grep <埠號>
例如:
Linux代碼
[root@SonarServer1 user0]# netstat -apn|grep 80
tcp 0 0 :::80 :::* LISTEN 19408/java
找到進程號以後,再使用以下命令查看詳細信息:
ps -aux|grep <進程號>

6. 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

7. linux如何查看埠被佔用

linux如何查看埠被哪個進程佔用的方法:

①lsof -i:埠號

,用於查看某一埠的佔用情況,比如查看22號埠使用情況,lsof -i:22,如下圖

8. Linux如何查詢哪些埠被佔用

前言

如何確定埠是否在Linux或類unix系統下佔用?怎麼檢查哪些埠正在Linux伺服器上被佔用?Linux系統如何使用命令行檢查埠是否已經在佔用?

查詢哪些埠正在伺服器的網路介面上被佔用是非常重要的工作。您需要查詢打開埠以檢測入侵。除了入侵之外,出於故障排除的目的,可能有必要檢查伺服器上的其他應用程序是否已經使用了某個埠。例如,您可以在同一系統上安裝Apache和Nginx伺服器。因此,有必要了解Apache或Nginx是否使用TCP埠80或443。本教程提供了使用netstat、nmap和lsof命令查詢正在使用的埠並查看正在使用該埠的應用程序的步驟。

如何查詢埠是否在使用中:
檢查Linux上被佔用的埠和應用程序:

Step1: 打開終端

Step2: 執行以下任意一條命令查看被佔用的埠

查看埠22是否被佔用:

較新版本的Linux使用以下查詢命令:

方法1: 使用lsof命令查詢佔用埠
先安裝lsof命令
RHEL/CentOS系統:

Debian/Ubuntu系統安裝lsof命令

使用語法如下

OpenBSD

看到類似這樣的輸出結果:

sshd是進程名字
TCP 22表示sshd進程佔用了TCP 22埠,正在監聽中(LISTEN)
1243表示sshd進程號

方法二:使用netstat查詢被佔用的埠號

較新的Linux發行版已經不再默認集成netstat命令,而是使用新命令ss取代了。
如果要使用netstat命令,需要手動安裝net-tools套件:
RHEL/CentOS系統安裝net-tools套件,執行以下命令:

Debian/Ubuntu系統執行以下命令:

您可以使用netstat查詢被佔用的埠和應用程序,如下所示。
執行以下命令查詢:

在Linux上,netstat命令已經廢棄了一段時間。因此,你需要使用ss命令如下:

或者:

其中ss命令選項如下:
-t : 只顯示Linux上的TCP套接字
-u : 在Linux上只顯示UDP套接字
-l : 監聽套接字。例如,TCP埠22由SSHD伺服器打開。
-p : 列出打開套接字的進程名
-n : 不要解析服務名稱,即不要使用DNS

FreeBSD/MacOS X netstat 語法
FreeBSD/MacOS X查詢被佔用的埠

或者

OpenBSD netstat 語法
OpenBSD查詢被佔用的埠

或者

方法三:使用`nmap`命令查詢Linux被佔用的埠

默認情況下,Linux發行版並沒有默認安裝nmap命令,
CentOS系統安裝nmap

Ubuntu系統安裝nmap

使用nmap查詢本機被佔用的埠

查詢Linux系統被佔用的UDP埠

查詢Linux系統被佔用的TCP埠

你可以同時查詢被佔用的TCP和UDP埠

結論:

本教程解釋了如何在Linux系統上使用命令行查詢TCP或者UDP埠是否被佔用。有關更多信息,請參見nmap命令和lsof命令頁面

9. 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

10. 請問一下linux查看埠佔用的方法

使用lsof命令:lsof-i:port_number|grep(LISTEN);-i是用來查找和網路相關的文件,:號是必須的,它是標志你查找的是一個埠。port_number就是你要查找的埠號,譬如你要查找是否有程序佔用了oracle的監聽埠1521,就可以使用lsof-i:1521|grep(LISTEN)。如果有程序已經佔用了,那麼下面列印的第二個欄位就是該程序的進程id,第一個欄位是進程的名字。
更多關於linux查看埠佔用的方法,進入:https://www.abcgonglue.com/ask/cdf95e1615822305.html?zd查看更多內容

熱點內容
聊天軟體編程 發布:2024-09-17 03:00:07 瀏覽:725
linuxoracle安裝路徑 發布:2024-09-17 01:57:29 瀏覽:688
兩個安卓手機照片怎麼同步 發布:2024-09-17 01:51:53 瀏覽:207
cf編譯後沒有黑框跳出來 發布:2024-09-17 01:46:54 瀏覽:249
安卓怎麼禁用應用讀取列表 發布:2024-09-17 01:46:45 瀏覽:524
win10設密碼在哪裡 發布:2024-09-17 01:33:32 瀏覽:662
情逢敵手迅雷下載ftp 發布:2024-09-17 01:32:35 瀏覽:337
安卓如何讓軟體按照步驟自動運行 發布:2024-09-17 01:28:27 瀏覽:197
Z包解壓命令 發布:2024-09-17 01:27:51 瀏覽:221
吉林ipfs存儲伺服器雲主機 發布:2024-09-17 01:27:38 瀏覽:685