Linux下幾個常用的好命令(一定收藏)

lsof/netstat命令的一個重要作用: 根據進程查端口, 根據端口查進程

我們知道, 根據ps -aux | grep xxx就是很快實現進程名和進程號的互查, 所以我們只說進程號pid就行。

1.根據進程pid查端口: lsof -i | grep pid 2.根據端口port查進程(某次面試還考過): lsof -i:port 3.根據進程pid查端口: netstat -nap | grep pid 4.根據端口port查進程 netstat -nap | grep port

Linux查看端口使用情況,關閉端口,結束端口對應的程序

首先你必須知道,端口不是獨立存在的,它是依附於進程的。某個進程開啟,那麼它對應的端口就開啟了,進程關閉,則該端口也就關閉了。下次若某個進程再次開啟,則相應的端口也再次開啟。而不要純粹的理解為關閉掉某個端口,不過可以禁用某個端口。

可以通過"netstat -anp"或"netstat -tuln" 來查看哪些端口被打開。(netstat命令進行端口的查看)

(注:加參數'-n'會將應用程序轉為端口顯示,即數字格式的地址,如:nfs->2049, ftp->21,因此可以開啟兩個終端,一一對應一下程序所對應的端口號)

然後可以通過"lsof -i:$PORT"查看應用該端口的程序($PORT指對應的端口號)。或者你也可以查看文件/etc/services,從裡面可以找出端口所對應的服務。

(注:有些端口通過netstat查不出來,更可靠的方法是"sudo nmap -sT -O localhost")

若要關閉某個端口,則可以:

1)通過iptables工具將該端口禁掉,如:

"sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"

"sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"

2)或者關掉對應的應用程序,則端口就自然關閉了,如:

"kill -9 PID" (PID:進程號)

如: 通過"netstat -anp | grep ssh"

有顯示:tcp 0 127.0.0.1:21 0.0.0.0:* LISTEN 7546/ssh

則: "kill -9 7546" 或者 "killall ssh""pkill ssh"等等


分享到:


相關文章: