Câu trả lời:
Bạn có thể sử dụng sort
để sắp xếp lại đầu ra của netstat
bất kỳ định dạng nào bạn muốn.
$ netstat -anpt 2>&1 | tail -n +5 | sort -k7,7 -k 6,6
Điều này sẽ sắp xếp đầu ra bằng cách sử dụng cột thứ 7 trước tiên (tên quy trình / PID) theo sau là trạng thái (THÀNH LẬP, LISTEN, v.v.).
LƯU Ý: Phần đầu tiên của lệnh, netstat -anpt 2>&1 | tail -n +5 ..
sẽ chuyển tất cả đầu ra có thể xảy ra trên STDOUT sang STDIN và sau đó cắt 5 dòng đầu tiên là đầu ra của nồi hơi netstat
mà chúng ta không quan tâm.
$ 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
...
Bạn có thể sử dụng một cách tiếp cận tương tự để có được số đếm bằng các công cụ khác nhau như wc
hoặc uniq -c
.
Nếu bạn thực sự muốn có được đầu ra netstat
trông như thế này:
102 squid ESTABLISHED
32 httpd ESTABLISHED
Bạn có thể thực hiện thêm một số lát và thái hạt lựu bằng cách sử dụng awk
& sed
. Điều này có thể được thực hiện nhỏ gọn hơn, nhưng sẽ giúp bạn bắt đầu và thực hiện công việc.
$ 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
LƯU Ý: column -t
chỉ cần căn chỉnh tất cả đầu ra trong các cột đẹp.
Cuối cùng để làm những gì bạn muốn về kiểm đếm các lần xuất hiện:
$ 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
Cột đầu tiên đại diện cho số lượng.
từ wikipedia
Trên Linux,
netstat
(một phần của "công cụ mạng") không được dùng nữa ,ss
(một phần của iproute2) nên được sử dụng thay thế.
Các net-công cụ gói đã không nhìn thấy một thông cáo Linux trong hơn một thập kỷ. Đó là một thời gian dài để không có bản cập nhật cho bộ chương trình được thiết kế để quản lý và giám sát các giao diện truyền thông của hạt nhân đang phát triển - đặc biệt là khi bạn đang nói về hạt nhân thực sự chạy internet.
Rất may, mặc dù có gói iproute2 được duy trì tích cực - bao gồm ss
tiện ích.
Với ss
bạn có thể làm những điều bạn yêu cầu như:
ss -np state ESTABLISHED
từ 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.