it-swarm-tr.com

Bir bağlantı noktasına hangi işlemin bağlı olduğunu belirleme

Bu komutu kullanarak biliyorum:

lsof -i TCP 

(veya lsof ile bazı parametreler var) Hangi işlemin belirli bir bağlantı noktasına bağlı olduğunu belirleyebilirim. Bu, 8080'e bağlanmak isteyen bir şey başlatmaya çalışıyorsam ve başka birileri zaten bu bağlantı noktasını kullanıyorsa, yararlı olduğunu söyleyebilirim, ancak ne olduğunu bilmiyorum.

Lsof kullanmadan bunu yapmanın kolay bir yolu var mı? Birçok sistemde çalışmak için zaman harcıyorum ve genellikle kurulu değil.

92
user5721

netstat -lnp Her dinleme bağlantı noktasının yanındaki pid ve işlem adını listeler. Bu Linux altında çalışır, ancak diğerleri (AIX gibi) çalışmaz. TCP) istiyorsanız -t Ekleyin.

# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:24800           0.0.0.0:*               LISTEN      27899/synergys
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      3361/python
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2264/mysqld
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      22964/Apache2
tcp        0      0 192.168.99.1:53         0.0.0.0:*               LISTEN      3389/named
tcp        0      0 192.168.88.1:53         0.0.0.0:*               LISTEN      3389/named

vb.

120
Cakemox

AIX'te, işlem bağlanmasını belirlemek için netstat & rmsock kullanılabilir:

[[email protected]] netstat -Ana|grep LISTEN|grep 80
f100070000280bb0 tcp4       0      0  *.37               *.*        LISTEN
f1000700025de3b0 tcp        0      0  *.80               *.*        LISTEN
f1000700002803b0 tcp4       0      0  *.111              *.*        LISTEN
f1000700021b33b0 tcp4       0      0  127.0.0.1.32780    *.*        LISTEN

# Port 80 maps to f1000700025de3b0 above, so we type:
[[email protected]] rmsock f1000700025de3b0 tcpcb
The socket 0x25de008 is being held by process 499790 (Java).
12
frielp

Linux'ta kullanılabilen başka bir araç ss. Fedora'daki ss man sayfasından:

NAME
       ss - another utility to investigate sockets
SYNOPSIS
       ss [options] [ FILTER ]
DESCRIPTION
       ss is used to dump socket statistics. It allows showing information 
       similar to netstat. It can display more TCP and state informations  
       than other tools.

Aşağıdaki örnek çıktı - son sütun işlem bağlamasını gösterir:

[[email protected]] ss -ap
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                    :::http                    :::*        users:(("httpd",20891,4),("httpd",20894,4),("httpd",20895,4),("httpd",20896,4)
LISTEN     0      128             127.0.0.1:munin                    *:*        users:(("munin-node",1278,5))
LISTEN     0      128                    :::ssh                     :::*        users:(("sshd",1175,4))
LISTEN     0      128                     *:ssh                      *:*        users:(("sshd",1175,3))
LISTEN     0      10              127.0.0.1:smtp                     *:*        users:(("sendmail",1199,4))
LISTEN     0      128             127.0.0.1:x11-ssh-offset                  *:*        users:(("sshd",25734,8))
LISTEN     0      128                   ::1:x11-ssh-offset                 :::*        users:(("sshd",25734,7))
8
frielp

Solaris için pfiles ve ardından sockname: veya port:.

Bir örnek ( buradan ):

pfiles `ptree | awk '{print $1}'` | egrep '^[0-9]|port:'

Bir zamanlar belirli bir limanın arkasında hangi sürecin olduğunu belirlemeye çalışırken karşılaştım (bu sefer 8000 idi). Ben çeşitli lsof ve netstat denedim, ama sonra bir şans aldı ve bir tarayıcı (yani http: // hostname: 8000 / ) aracılığıyla bağlantı noktasına isabet denedi. Bakın ve bir açılış ekranı beni karşıladı ve sürecin ne olduğu belli oldu (kayıt için, Splunk ).

Bir düşünce daha: "ps -e -o pid, args" (YMMV) bazen bağımsız değişkenler listesinde bağlantı noktası numarasını gösterebilir. Grep senin arkadaşın!

2
rickumali