pgm*_*lon 14 python linux port netstat lsof
我尝试在端口7054上启动Python SimpleHTTPServer:
$ sudo python -m SimpleHTTPServer 7054
...
socket.error: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)
所以,我运行了以下命令:
$ sudo netstat -ntpu | grep 7054
$ sudo lsof -i -n -P | grep 7054
Run Code Online (Sandbox Code Playgroud)
但我没有结果.
从netstat联机帮助页:
netstat   [address_family_options]   [--tcp|-t]   [--udp|-u]   [--raw|-w]   [--listening|-l]  [--all|-a]  [--numeric|-n]  [--numeric-hosts]  [--numeric-ports]
[--numeric-users] [--symbolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c]
Run Code Online (Sandbox Code Playgroud)
我使用以下选项:
sudo netstat -tanl | grep 7054
Run Code Online (Sandbox Code Playgroud)
这是--numeric,--tcp,--all,--listening
我认为netstat显示在特定端口上侦听进程的pid所需的最小选项是-nlp.
lsof您指定的选项适合我.使用https://wiki.python.org/moin/UdpCommunication#Receiving上的示例代码和python -m SimpleHTTPServer 7054:
$ netstat -nlp | grep 7054
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:7054            0.0.0.0:*               LISTEN      20458/python    
udp        0      0 0.0.0.0:7054          0.0.0.0:*                           20498/python    
$ lsof -i -n -P | grep 7054
python    20458 michael    3u  IPv4 143736      0t0  TCP *:7054 (LISTEN)
python    20498 michael    3u  IPv4 173739      0t0  UDP *:7054 
Run Code Online (Sandbox Code Playgroud)
额外信用:坚持别名:
listening() {
    netstat -nlp | grep $1
}
Run Code Online (Sandbox Code Playgroud)
并使用它:
$ listening 7054
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           8937 次  |  
        
|   最近记录:  |