Lệnh tương tự như netstat -np nhưng được nhóm theo trạng thái và PID?


9

Có một lệnh tương tự netstat -npnhưng được nhóm theo trạng tháiPID không?

Tôi muốn biết số lượng kết nối máy chủ hiện tại ở một trạng thái cụ thể được nhóm theo Chương trình.

tương tự như

102 squid ESTABLISHED
32 httpd ESTABLISHED

Tôi sử dụng RHEL5.

Câu trả lời:


11

Bạn có thể sử dụng sortđể sắp xếp lại đầu ra của netstatbấ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 netstatmà chúng ta không quan tâm.

Thí dụ

$ 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ư wchoặc uniq -c.

Thay đổi đầu ra

Nếu bạn thực sự muốn có được đầu ra netstattrô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.

Đếm các kết nối

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.


Cảm ơn bạn đã trả lời chi tiết như vậy - Tôi sẽ bỏ phiếu khi tôi có 15 đại diện
Kingo

5

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 sstiện ích.

Với ssbạ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.

0

Bạn có thể sử dụng netstat, cột và awk:

netstat -anpt | column -t | awk '{print $1,$6,$7}'

Điều này in cột đầu tiên, thứ sáu và thứ bảy.

tcp LISTEN -
tcp LISTEN -
tcp ESTABLISHED 2084/firefox
tcp ESTABLISHED 2084/firefox
tcp6 LISTEN -
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.