1. 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
2. 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命令幹掉!
3. linux如何查看埠被哪個進程佔用
1)使用lsof命令 lsof是一個非常強大的linux工具,她被用來查找哪些程序使用了那些文件。在linux系統下,基本上所有的東西都可以被當作文件來用。socket當然也是一種文件了。所以lsof可以用來查找誰用了某一個埠。具體方法: lsof -i :port_nu...
4. 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 <進程號>
5. linux下如何查看埠被哪個進程佔用
【1,】lsof -i
lsof -i 用以顯示符合條件的進程情況,lsof(list open files)是一個列出當前系統打開文件的工具。以root用戶來執行lsof -i命令,
【2,】lsof -i:埠號
lsof -i:埠號,用於查看某一埠的佔用情況,比如查看22號埠使用情況,lsof -i:22
【3,】netstat -tunlp
netstat -tunlp用於顯示tcp,udp的埠和進程等相關情況
【4,】netstat -tunlp|grep 埠號
netstat -tunlp|grep 埠號,用於查看指定埠號的進程情況,如查看22埠的情況,netstat -tunlp|grep 22
6. linux中怎樣查看佔用8080埠的進程
1,使用lsof命令,使用IPv4協議的區域網:執行命令: lsof -Pnl +M -i4|grep 8080
輸出結果: java 1419 1401 IPv4 6793357
2,先使用netstat命令,再用 ps命令。
執行命令:netstat -anp|grep 8080
輸出結果:tcp 0 0 :::8080
執行命令: ps -ef | grep 12006輸出結果: root 12886 12851 0 Dec09 /home/bjca/bea/jdk160_05/bin/java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m......
7. linux 查找埠被哪個進程使用
你好,
方法:
1,使用netstat 和lsof命令,並用grep來過濾你需要查看的埠。
2,例:查看tcp有哪些埠打開了:
netstat -a| grep tcp然後查看哪個進程佔用了這些埠:
lsof -i如果要查看某個埠,比如80埠是哪個進程:
lsof -i | grep :80
8. linux下查看某一埠被哪個進程佔用
1)使用lsof命令
lsof是一個非常強大的linux工具,她被用來查找哪些程序使用了那些文件。在linux系統下,基本上所有的東西都可以被當作文件來用。socket當然也是一種文件了。所以lsof可以用來查找誰用了某一個埠。具體方法:
lsof -i :port_number |grep "(LISTEN)"
-i是用來查找和網路相關的文件,":"號是必須的,它是標志你查找的是一個埠。port_number就是你要查找的埠號,譬如你要查找是否 有程序佔用了oracle的監聽埠1521,就可以使用lsof -i :1521 |grep "(LISTEN)"。如果有程序已經佔用了,那麼下面列印的第二個欄位就是該程序的進程id,第一個欄位是進程的名字。
如果只有losf -i :port_number可能會查到很多應用程序,但這些程序實際並沒有佔用你指定的埠,這些埠只是連接到本機器或者別的機器的該埠。所以要grep "(LISTEN)「,因為一個埠只可能被一個程序佔用的,所以這種方法是可靠的。
2)使用netstat 命令
大家一定對這個命令比較熟悉了,可能你從沒有想到用到來查找哪一個程序的佔用了指定的埠。但是netstat -an 的確提供了這種功能。所以有問題了一定要想到先去查找man手冊,不過說實話,某些man手冊寫得讓中國人看不懂,那沒有辦法了,就googe或者 一下吧。
執行man netstat命令,你會發現netstat 提供了'-p'的選項,這個選項的功能是告訴你哪個程序佔用了該埠,但是她提供的形式比較古怪是以pid/process_name提供的。pid當然 是進程id了,process_name是進程的命令,中間以'/'號分隔。
和上面的原因一樣,我們只查找listen的埠,netstat 給我們提供了-l的選項,這個選項不是默認的選項。
下面以1521埠來看怎麼查找到該程序,我們使用下面的命令:
netstat -lnp|awk 'BEGIN{prt=":1521$"}{if ($4 ~ prt) print $0}'
在這里使用awk來匹配第4個欄位的模式是為了避免誤判。
9. linux如何查看埠被哪個進程佔用
1)使用lsof命令
lsof是一個非常強大的linux工具,她被用來查找哪些程序使用了那些文件。在linux系統下,基本上所有的東西都可以被當作文件來用。socket當然也是一種文件了。所以lsof可以用來查找誰用了某一個埠。具體方法:
lsof
-i
:port_number
|grep
"(LISTEN)"
-i是用來查找和網路相關的文件,":"號是必須的,它是標志你查找的是一個埠。port_number就是你要查找的埠號,譬如你要查找是否
有程序佔用了oracle的監聽埠1521,就可以使用lsof
-i
:1521
|grep
"(LISTEN)"。如果有程序已經佔用了,那麼下面列印的第二個欄位就是該程序的進程id,第一個欄位是進程的名字。
如果只有losf
-i
:port_number可能會查到很多應用程序,但這些程序實際並沒有佔用你指定的埠,這些埠只是連接到本機器或者別的機器的該埠。所以要grep
"(LISTEN)「,因為一個埠只可能被一個程序佔用的,所以這種方法是可靠的。
2)使用netstat
命令
大家一定對這個命令比較熟悉了,可能你從沒有想到用到來查找哪一個程序的佔用了指定的埠。但是netstat
-an
的確提供了這種功能。所以有問題了一定要想到先去查找man手冊,不過說實話,某些man手冊寫得讓中國人看不懂,那沒有辦法了,就googe或者
一下吧。
執行man
netstat命令,你會發現netstat
提供了'-p'的選項,這個選項的功能是告訴你哪個程序佔用了該埠,但是她提供的形式比較古怪是以pid/process_name提供的。pid當然
是進程id了,process_name是進程的命令,中間以'/'號分隔。
和上面的原因一樣,我們只查找listen的埠,netstat
給我們提供了-l的選項,這個選項不是默認的選項。
下面以1521埠來看怎麼查找到該程序,我們使用下面的命令:
netstat
-lnp|awk
'BEGIN{prt=":1521$"}{if
($4
~
prt)
print
$0}'
在這里使用awk來匹配第4個欄位的模式是為了避免誤判。