Linux
Linux命令查找程序正在執行的埠?
有沒有一種干淨的方法來檢查 linux 程序/服務正在執行/監聽哪個埠?
我知道
fuser
,netcat
,lsof
等都是找到它的方法,但它們會返回一堆其他資訊。例如,netstat -ltnp | grep -w process_name"
可以解決問題,但它會返回tcp 0 0 127.0.0.1:1234 0.0.0.0:* LISTEN 4880/process tcp6 0 0 ::1: :::* LISTEN 4880/process
另外,我想要程序執行的埠,而不是給定埠上執行的程序,例如,
magic_command -abcd process_name
返回埠號,否則不返回任何內容。PS:我已經檢查了明顯的連結,例如https://ostechnix.com/how-to-find-which-service-is-listening-on-a-particular-port/
lsof
可用於此。下面是 magic_command 的樣子:sudo lsof -i -P -n | grep LISTEN | grep <your_process_name>
您可以將其包裝成別名:
alias magic="sudo lsof -i -P -n | grep LISTEN | grep "
樣本輸出:
$ magic httpd httpd 9438 apache 3u IPv4 2087313137 0t0 TCP *:80 (LISTEN) httpd 9438 apache 4u IPv4 2087321333 0t0 TCP *:49383 (LISTEN) httpd 9438 apache 5u IPv4 2087321335 0t0 TCP *:49384 (LISTEN) httpd 9438 apache 6u IPv4 2087345343 0t0 TCP *:443 (LISTEN) httpd 23940 root 3u IPv4 2087313137 0t0 TCP *:80 (LISTEN) httpd 23940 root 4u IPv4 2087321333 0t0 TCP *:49383 (LISTEN) httpd 23940 root 5u IPv4 2087321335 0t0 TCP *:49384 (LISTEN) httpd 23940 root 6u IPv4 2087345343 0t0 TCP *:443 (LISTEN)
如果你真的只關心埠,一些輸出處理會切斷不相關的資訊
$ magic httpd | awk -F: '{print $2}' | cut -d\ -f1 | sort -un 80 443 49383 49384