netstat -np
유사하지만 그룹화된 명령이 있습니까?상태그리고PID?
현재 프로그램별로 그룹화된 특정 상태의 서버 연결 수를 알고 싶습니다.
처럼,
102 squid ESTABLISHED
32 httpd ESTABLISHED
RHEL5를 사용하고 있습니다.
답변1
원하는 형식으로 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으로 보낸 다음 netstat
관심이 없는 상용구 출력인 처음 5줄을 자릅니다.
예
$ 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
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
첫 번째 열은 개수를 나타냅니다.
답변2
~에서위키피디아
Linux에서
netstat
("net-tools"의 일부)는더 이상 사용되지 않음ss
, (iproute2의 일부)를 대신 사용해야 합니다.
이것네트워크 도구이 패키지는 10년 넘게 Linux에서 출시되지 않았습니다. 끊임없이 진화하는 커널 통신 인터페이스를 관리하고 모니터링하도록 설계된 프로그램 모음의 경우 업데이트 없이는 오랜 시간이 걸립니다. 특히 실제로 인터넷을 실행하는 커널에 대해 이야기할 때는 더욱 그렇습니다.
다행히도 적극적으로 유지 관리되고 있습니다.IP 경로 2패키지 - 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.
답변3
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 -