Saya memiliki server ubuntu / hardy, dengan kernel 2.6.24-23-server dan netstat:
# netstat --version
net-tools 1.60
netstat 1.42 (2001-04-15)
Masalahnya adalah bahwa kita memiliki banyak koneksi ESTABLISHED yang tidak menampilkan PID atau nama Program dalam netstat -ntap
output. Netstat dipanggil dari root, tidak ada chroot, grsecurity, atau apapun seperti ini (atau begitulah yang saya katakan :).
Adakah yang tahu apa yang salah?
MEMPERBARUI
lsof -n -i
berfungsi ok, dan menunjukkan pid / nama proses untuk koneksi.
netstat -ntap
bukannetstat ntap
?netstat -ntap
- seperti yang saya tulis. karena ini adalah cara opsi diberikan ke netstat sesuai dengan halaman manualnya.Jawaban:
Ini akan terjadi dengan proses kernel seperti NFS, tetapi juga kadang-kadang terjadi dengan aplikasi reguler: RHEL 5 memiliki perilaku yang sama.
Perhatikan bahwa lsof, di sisi lain, kata-kata dengan benar:
sumber
menurut pendapat saya, mungkin ada dua situasi:
1) pengguna normal mengundurkan diri "netstat" tidak dapat melihat proses yang diluncurkan oleh root
2) beberapa proses berjalan di kernel
sumber
Untuk koneksi yang sudah ada, ini hanya boleh terjadi untuk koneksi yang diinisiasi dari ruang kernel, seperti NFS atau DRBD. Jelas menunggu koneksi bisa saja proses mati di bawahnya. Jika Anda tidak dapat mengetahui apa yang menyebabkan koneksi yang diberikan, tempel output dan seseorang dapat memberi tahu Anda apa itu koneksi.
sumber
Saya memiliki perilaku yang sama dan dugaan saya adalah bahwa perilaku netstat mungkin telah berubah. Sebagai contoh saya melihat port dan program untuk 'wget', tetapi tidak untuk proses PHP Apache, yang lebih penting bagi saya.
Penanganan masalah: Saya menulis ulang skrip untuk menggunakan lsof (lihat petunjuk di atas)
sumber
Tiba di sini karena hari ini saya menemukan pertanyaan yang sama di ubuntu 18,04 LTS (netstat adalah versi yang sama netstat 1,42 (2001-04-15)), anehnya masih tidak ada jawaban setelah 8 tahun. Setelah meramban kode sumber net-tools, saya dapat menemukannya.
Dalam kode sumber netstat:
semua folder proses di / proc diulang, setiap direktori fd di / proc // fd diperiksa untuk membuat peta dari inode socket ke pid / progname.
kemudian / proc / net / tcp diperiksa untuk mendapatkan informasi soket tcp (oleh fungsi tcp_info), termasuk inode soket.
saat mengeluarkan informasi soket tcp, pid / progname ditanyai dari peta dalam langkah 1 melalui inode soket. jika tidak ada yang ditemukan, '-' keluaran.
Jika soket dibuat setelah peta dibuat, pid / progname tidak akan ditemukan di peta.
sumber