มีคำสั่งคล้ายกับnetstat -np
แต่จัดกลุ่มตามสถานะและPIDหรือไม่
ฉันต้องการทราบจำนวนปัจจุบันของการเชื่อมต่อเซิร์ฟเวอร์ในสถานะเฉพาะที่จัดกลุ่มตามโปรแกรม
คล้ายกับ,
102 squid ESTABLISHED
32 httpd ESTABLISHED
ฉันใช้ RHEL5
มีคำสั่งคล้ายกับnetstat -np
แต่จัดกลุ่มตามสถานะและPIDหรือไม่
ฉันต้องการทราบจำนวนปัจจุบันของการเชื่อมต่อเซิร์ฟเวอร์ในสถานะเฉพาะที่จัดกลุ่มตามโปรแกรม
คล้ายกับ,
102 squid ESTABLISHED
32 httpd ESTABLISHED
ฉันใช้ RHEL5
คำตอบ:
คุณสามารถใช้sort
เพื่อจัดระเบียบผลลัพธ์netstat
ในรูปแบบที่คุณต้องการ
$ netstat -anpt 2>&1 | tail -n +5 | sort -k7,7 -k 6,6
สิ่งนี้จะเรียงลำดับผลลัพธ์โดยใช้คอลัมน์ที่ 7 ก่อน (ชื่อกระบวนการ / PID) ตามด้วยสถานะ (ESTABLISHED, LISTEN และอื่น ๆ )
หมายเหตุ:ส่วนแรกของคำสั่งnetstat -anpt 2>&1 | tail -n +5 ..
จะนำเอาท์พุททั้งหมดที่อาจเกิดขึ้นบน STDOUT ไปยัง STDIN เช่นกันจากนั้นตัด 5 บรรทัดแรกซึ่งเป็นเอาต์พุตสำเร็จรูปnetstat
ที่เราไม่สนใจ
$ netstat -anpt 2>&1 | tail -n +5 | sort -k7,7 -k 6,6
tcp 0 0 192.168.1.20:49309 192.168.1.103:631 ESTABLISHED 2077/gnome-settings
tcp 0 0 192.168.1.20:38393 204.62.14.135:443 ESTABLISHED 2260/mono
tcp 0 0 192.168.1.20:39738 74.125.192.125:5222 ESTABLISHED 2264/pidgin
tcp 0 0 192.168.1.20:40097 87.117.201.130:6667 ESTABLISHED 2264/pidgin
tcp 0 0 192.168.1.20:53920 217.168.150.38:6667 ESTABLISHED 2264/pidgin
...
tcp 1 0 192.168.1.20:50135 190.93.247.58:80 CLOSE_WAIT 24714/google-chrome
tcp 1 0 192.168.1.20:44420 192.168.1.103:631 CLOSE_WAIT 24714/google-chrome
tcp 0 0 192.168.1.20:36892 74.125.201.188:5228 ESTABLISHED 24714/google-chrome
tcp 0 0 192.168.1.20:43778 74.125.192.125:5222 ESTABLISHED 24714/google-chrome
tcp 0 0 192.168.1.20:33749 198.252.206.140:80 ESTABLISHED 24714/google-chrome
...
คุณสามารถใช้วิธีการที่คล้ายกันที่จะได้รับการนับการใช้เครื่องมือต่างๆเช่นหรือwc
uniq -c
หากคุณต้องการให้ได้ผลลัพธ์netstat
เช่นนี้:
102 squid ESTABLISHED
32 httpd ESTABLISHED
คุณสามารถทำบางหั่นต่อไปและ dicing ใช้และawk
sed
สิ่งนี้สามารถทำให้กะทัดรัดมากขึ้น แต่คุณควรเริ่มต้นและทำงานได้ดีขึ้น
$ netstat -anpt 2>&1 | tail -n +5 | awk '{print $7,$6}' | sort -k1,1 -k3,3 \
| sed 's#/# #' | column -t
2264 pidgin ESTABLISHED
2264 pidgin ESTABLISHED
24714 google-chrome CLOSE_WAIT
24714 google-chrome CLOSE_WAIT
24714 google-chrome ESTABLISHED
24714 google-chrome ESTABLISHED
...
24714 google-chrome ESTABLISHED
26358 ssh ESTABLISHED
26358 ssh ESTABLISHED
26358 ssh ESTABLISHED
26358 ssh LISTEN
26358 ssh LISTEN
26358 ssh LISTEN
หมายเหตุ: column -t
เพียงแค่จัดเรียงเอาต์พุตทั้งหมดในคอลัมน์ที่ดี
ในที่สุดก็ทำสิ่งที่คุณต้องการในแง่ของการรับรู้เหตุการณ์ที่เกิดขึ้น:
$ netstat -anpt 2>&1 | tail -n +5 | awk '{print $7,$6}' | sort -k1,1 -k3,3 \
| sed 's#/# #' | column -t | uniq -c
6 - LISTEN
8 - TIME_WAIT
1 2077 gnome-settings ESTABLISHED
1 2260 mono ESTABLISHED
10 2264 pidgin ESTABLISHED
2 24714 google-chrome CLOSE_WAIT
27 24714 google-chrome ESTABLISHED
3 26358 ssh ESTABLISHED
4 26358 ssh LISTEN
1 26359 ssh ESTABLISHED
4 3042 thunderbird ESTABLISHED
1 32472 monodevelop ESTABLISHED
2 32472 monodevelop LISTEN
1 32533 mono ESTABLISHED
1 32533 mono LISTEN
1 3284 monodevelop LISTEN
1 3365 mono LISTEN
1 4528 mono LISTEN
1 8416 dropbox ESTABLISHED
1 8416 dropbox LISTEN
คอลัมน์แรกแสดงถึงการนับ
จากวิกิพีเดีย
บน Linux
netstat
(ส่วนหนึ่งของ "สุทธิเครื่องมือ") คือเลิก ,ss
(ส่วนหนึ่งของ iproute2) ควรจะนำมาใช้แทน
สุทธิเครื่องมือแพคเกจยังไม่ได้เห็นการเปิดตัวลินุกซ์ในรอบกว่าทศวรรษที่ผ่านมา นั่นเป็นเวลานานที่จะไม่ต้องมีการอัพเดตสำหรับชุดโปรแกรมที่ออกแบบมาเพื่อจัดการและตรวจสอบอินเตอร์เฟสการสื่อสารของเคอร์เนลที่พัฒนาตลอดเวลาโดยเฉพาะอย่างยิ่งเมื่อคุณพูดถึงเคอร์เนลที่ใช้งานอินเทอร์เน็ต
โชคดีที่มีแพ็คเกจiproute2 ที่ได้รับการบำรุงรักษาอย่างดีซึ่งรวมถึงss
ยูทิลิตี้
ด้วยss
คุณสามารถทำสิ่งที่คุณขอที่ชอบ:
ss -np state ESTABLISHED
จากman ss
:
#USAGE EXAMPLES
ss -t -a
# Display all TCP sockets.
#
ss -t -a -Z
# Display all TCP sockets with process SELinux
# security contexts.
#
ss -u -a
# Display all UDP sockets.
#
ss -o state established '( dport = :ssh or sport = :ssh )'
# Display all established ssh connections.
#
ss -x src /tmp/.X11-unix/*
# Find all local processes connected to X server.
#
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24
# List all the tcp sockets in state FIN-WAIT-1
# for our apache to network 193.233.7/24 and
# look at their timers.
คุณสามารถใช้ netstat คอลัมน์และ awk:
netstat -anpt | column -t | awk '{print $1,$6,$7}'
สิ่งนี้พิมพ์คอลัมน์แรก, คอลัมน์ที่หกและเจ็ด
tcp LISTEN -
tcp LISTEN -
tcp ESTABLISHED 2084/firefox
tcp ESTABLISHED 2084/firefox
tcp6 LISTEN -