netstat -ntap bazı bağlantılar için pid / process adını göstermiyor mu?


11

Ben ubuntu / hardy sunucu, çekirdek 2.6.24-23-sunucu ve netstat ile:

# netstat --version
net-tools 1.60
netstat 1.42 (2001-04-15)

Sorun şu ki, netstat -ntapçıkışta PID veya Program adı göstermeyen çok sayıda KURULU bağlantı var . Netstat kökten çağrıldı, hiçbir kroşe, grsecurity veya böyle bir şey yok (ya da öyle söylendi :).

Neyin yanlış olabileceği hakkında bir fikrin var mı?

GÜNCELLEME

lsof -n -i tamam çalışıyor ve bağlantılar için pid / process adını gösteriyor.


2
Kök veya sudo ile çalıştırdığınızdan emin misiniz?
Dom

Evet, root üzerinden ve hatta sudo üzerinden root üzerinden çalıştırıldı. aynı etki.

netstat -ntapBunun yerine yapmadığınızdan emin misiniz netstat ntap?
Kyle Brandt

Eminim netstat -ntapyazıyordum gibi yapıyordum . çünkü netstat'a man sayfasına göre seçenekler verilmiştir.

Yan not - ben sadece kontrol ve netstat "-" olmadan verilen seçenekleri tanımıyor gibi görünüyor.

Yanıtlar:


4

Bu, NFS gibi çekirdek işlemlerinde gerçekleşir, ancak bazen normal uygulamalarda da gerçekleşir: RHEL 5 aynı davranışa sahiptir.

# netstat -taupen | grep 30715
tcp        0      0 0.0.0.0:30715           0.0.0.0:*               LISTEN      66558      81467710   - 

Öte yandan, lsof'un sözcükleri düzgün bir şekilde not ettiğini unutmayın:

# lsof -i:30715
AppName 1598 useracct   78u     IPv4           81467710                   TCP *:30715 (LISTEN)

4
198_141:~ # netstat  -anp|grep 33000
tcp        0      0 0.0.0.0:53000           0.0.0.0:*               LISTEN       -                   
198_141:~ # lsof -i:33000
COMMAND   PID USER   FD   TYPE     DEVICE SIZE NODE NAME
vsftpd  28147 root    3u  IPv4 4089990174       TCP *:33000 (LISTEN)
198_141:~ # id
uid=0(root) gid=100(users) groups=16(dialout),100(users)
198_141:~ # 

benim içimde iki durum olabilir:

1) normal ayrıcalık kullanıcı excute "netstat" root tarafından başlatılan işlemleri göremez

2) Bazı işlemler çekirdekte çalışır


1

Kurulu bağlantılar için bu yalnızca NFS veya DRBD gibi çekirdek alanından başlatılan bağlantılar için gerçekleşmelidir. Açıkçası, bekleyen bağlantılar sürecin altında ölmüş olabilirdi. Belirli bir bağlantıya neyin neden olduğunu bulamazsanız, çıktıyı yapıştırın ve birisi size bunun ne olduğunu söyleyebilir.


Bunlar kesinlikle çekirdek tabanlı bağlantılar değildir, çünkü bunlar uygulamadan veritabanına bağlantılardır.

Netstat -atnp | grep EST çıktısı?
womble

benim sorunum bu - bağlantıları pid / program adı yerine tarafından listelenir i "-"

3
Ve bir yorumdan ziyade gerçekte ne olduğunu görmek istiyorum .
womble

Ortamı tanımlamak için kullanılabilecek isimler içerdiğinden, size tüm çıktıyı gösteremem. bu bağlantı noktasının satırı şuna benzer: "tcp 0 0 localhost: 36949 localhost: 6543 KURULDU -"

1

Aynı davranış var ve benim tahminim netstat davranışı değişmiş olabilir. Örneğin, 'wget' için bağlantı noktasını ve programı görüyorum, ancak benim için daha önemli olan Apache PHP işlemleri için değil.

Çözüm: Betiğimi lsof kullanmak için yeniden yazdım (yukarıdaki ipucuna bakın)


Pascal: Bu komutu sudo veya root olarak mı çalıştırdınız?
Stefan Lasiewski

0

Buraya gel çünkü bugünlerde aynı soruya ubuntu 18.04 LTS (netstat aynı sürüm netstat 1.42 (2001-04-15)) ile karşılaşıyorum, garip hala 8 yıl sonra cevap yok. Net-tools'ın kaynak koduna göz attıktan sonra bulabilirim.

Netstat kaynak kodunda:

  1. / proc içindeki tüm işlem klasörleri yinelenir, / proc // fd dizinindeki her bir fd soket inode'undan pid / progname'e bir harita oluşturmak için kontrol edilir.

  2. daha sonra / proc / net / tcp, soket inode dahil olmak üzere tcp soket bilgilerini (tcp_info işleviyle) almak için kontrol edilir.

  3. tcp soket bilgisini verirken, pid / progname soket inode vasıtasıyla 1. adımdaki haritadan sorgulanır. hiçbir şey bulunamazsa, '-' çıktısı verir.

Harita oluşturulduktan sonra soket oluşturulursa, pid / progname haritada bulunmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.