Belirli bir bağlantı noktasında hangi programın dinlendiğini nasıl bilebilirim?

Bir programın bağlantı noktasını dinlediğinden şüpheleniyorum. 8000 makinemde.

Aşağıdaki komutu çalıştırdığımda bu hatayı alıyorum:

> python -m SimpleHTTPServer# Lots of python errorsocket.error: [Errno 98] Address already in use

Başka bir bağlantı noktası kullanırsam (8000 varsayılan değerdir), web sunucusu iyi çalışır.

Eğer kaçarsam wget localhost:8000 komut satırından döndürür 404 Not Found.

Hangi programın bağlantı noktasını dinlediğini bulmak için ne yapabilirim (veya hangi araçlar kullanılabilir) 8000 ve oradan bu programın yapılandırıldığı yer?

Terminalinizi açın ve aşağıdaki gibi yazın

lsof -i :8000

bu komut, bu bağlantı noktası tarafından PID ile kullanılan uygulamayı listeler.(Sonuç yoksa sudo çünkü bazı işlemlere izniniz olmayabilir.)

Örneğin, 8000 numaralı bağlantı noktasıyla (python3 -m http.server):

$ lsof -i :8000COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAMEpython3 3269 user    3u  IPv4 1783216      0t0  TCP *:8000 (LISTEN)

Ve bağlantı noktası 22 (SSH):

$ sudo lsof -i :22COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAMEsshd     998 root    3u  IPv4 1442116      0t0  TCP *:ssh (LISTEN)sshd     998 root    4u  IPv6 1442118      0t0  TCP *:ssh (LISTEN)

Umarım yardımı dokunur.

Hangi işlemin hangi bağlantı noktasını dinlediğini görmek için netstat'ı kullanabilirsiniz.

Tüm ayrıntılara sahip olmak için bu komutu kullanabilirsiniz :

sudo netstat -peanut

8000 numaralı bağlantı noktasında hangisinin dinlediğini tam olarak bilmeniz gerekiyorsa bunu kullanabilirsiniz :

sudo netstat -peanut | grep ":8000 "

Netstat'tan gizlenebilecek bir işlem yok.

Cevabı @33833 ile açıklamak için çok ayrıntılı bilgi alabilirsiniz, örneğin:

$ lsof -i :8000COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEsquid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)$ ps -fp 1289UID        PID  PPID  C STIME TTY          TIME CMDproxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

Orada kalamarın süreç olduğunu görebiliyorum, ama aslında benim squid-deb-proxy bu limanı kaplıyor.

Java uygulamasının bir başka güzel örneği:

$ lsof -i :4242COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEjava    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)$ ps -fp 3075UID        PID  PPID  C STIME TTY          TIME CMDroot      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

İçinde görebilirsiniz lsof (Açık Dosyaları Listele) java olduğunu, bu da yardımcı olmaktan daha az. Koşu ps PID ile komutanın CrashPlan olduğunu hemen görebiliriz.

Denemek ss -den iproute2 paket:

ss -nlp | grep 8000

Kullanmanın başka bir yolu socklist -den procinfo paket:

man socklist

tanım
socklist tüm açık soketlerin, numaralandırma türlerinin, port, inode, uıd, pıd, fd ve ait olduğu programın bir listesini veren bir Perl betiğidir.

sudo socklist

type  port      inode     uid    pid   fd  nametcp     53      28749       0   1721    5  dnsmasqtcp    631      29190       0   2433   11  cupsdtcp  42376      82230    1000   1345   84  firefoxtcp  49048      71686    1000   1345   67  firefoxtcp  41248      81672    1000   1345  119  firefoxtcp  54676      84558    1000   1345   73  firefoxudp  56107      66258       0   3268   20  dhclientudp  40804      17857     107    679   14  avahi-daemonudp     53      28748       0   1721    4  dnsmasqudp     68      67427       0   3268    6  dhclientudp    631      19692       0    765    8  cups-browsedudp   5353      17855     107    679   12  avahi-daemon

Toplumdaki düşük nokta nedeniyle, burada yorum yapamam. Onsuz sudo yukarıdaki komutların tümü size İşlem Kimliği / Program Adı vermeyecektir.

Yani, aşağıdaki şeyleri yazmanız gerekir:

sudo lsof -i :8000

veya

sudo netstat -lntup

bu komut ayrıntılarını şu adresten kontrol edebilirsiniz man, help veya en sevdiğim yardımcım

Nmap'i kullanabilirsiniz.

PC'nizde hangi bağlantı noktalarının açık olduğunu bilmek gerçekten önemlidir, bu sadece Linux için değil, diğer işletim sistemleri için de yararlıdır, Linux'un hangi bağlantı noktalarının açık olduğunu kontrol etmek için birçok aracı vardır, en yaygın olanı bir komut satırı aracı olan nmap'tir, aynı zamanda grafiksel bir ön uç da vardır bu yolu tercih edersen onun için.1

yüklemek için tuşuna basmanız yeterlidir Ctrl+Alt+T terminal'i açmak için klavyenizde. Açıldığında, aşağıdaki komutu çalıştırın:

sudo apt-get install nmap

Nmap ve diğer yardımcı programlar hakkında daha fazla bilgi için şu adrese gidin: Burada

1Kaynak:garron.me

İşte hatırlanması kolay bir komut

ss -townlup Netid               State                 Recv-Q                Send-Q                                    Local Address:Port                               Peer Address:Porticmp6               UNCONN                0                     0                                                *%eth0:58                                            *:*udp                 UNCONN                0                     0                                         127.0.0.53%lo:53                                      0.0.0.0:*udp                 UNCONN                0                     0                                     172.31.26.71%eth0:68                                      0.0.0.0:*tcp                 LISTEN                0                     128                                             0.0.0.0:22                                      0.0.0.0:*tcp                 LISTEN                0                     128                                             0.0.0.0:443                                     0.0.0.0:*tcp                 LISTEN                0                     128                                       127.0.0.53%lo:53                                      0.0.0.0:*tcp                 LISTEN                0                     128                                                [::]:22                                         [::]:*tcp                 LISTEN                0                     128                                                [::]:443                                        [::]:*tcp                 LISTEN                0                     100                                                   *:9090                                          *:*                    users:(("java",pid=13008,fd=16))tcp                 LISTEN                0                     100                                                   *:8080                                          *:*                    users:(("java",pid=11556,fd=12))