이 작업 외에 wc -l /proc/net/tcp
더 빠른 방법이 있습니까 ?
총 TCP 연결 수가 필요합니다.
답변1
세부 정보 없이 번호만 얻으려면 에서 데이터를 읽을 수 있습니다 /proc/net/sockstat{,6}
. 절대적인 연결 수를 얻으려면 이 두 값을 결합해야 한다는 점을 기억하십시오.
커널 자체에서 정보를 얻으려면 NETLINK_INET_DIAG
커널에서 정보를 읽는 대신 커널에서 GetInfo를 사용할 수 있습니다./proc
답변2
더 빠른 방법? 이 방법을 사용하면 답을 얻는 데 1초도 채 걸리지 않습니다. 실제로 제 컴퓨터에서는 0.009초 밖에 걸리지 않습니다!
타이핑이 덜 필요한 방법을 찾고 계십니까? 이 경우 다음과 같은 별칭을 설정하십시오.
alias tcpcount="wc -l /proc/net/tcp"
이제 별칭(예: tcpcount
예시에서 사용한 것과 같은)을 입력하여 이 번호를 얻을 수 있습니다.
로그인할 때마다 별칭이 정의되도록 .bashrc에 이 줄을 입력하거나 추가하세요.
다음 명령은 연결 수가 많은 경우 더 빠르게 실행될 수 있습니다(또는 연결 수가 매우 적은 경우 약간 느릴 수 있음).
#!/bin/bash
/usr/bin/tail -1 /proc/net/tcp | (IFS=:
read COUNT DISCARD
echo $COUNT
)
아니면 어쩌면...
awk 'END {print NR}' /proc/net/tcp
두 솔루션 모두 "wc"가 행 개수에만 적합하지 않다고 가정합니다. 내 테스트에서는 이 가정이 올바른 것으로 나타났습니다.
첫 번째 명령은 tail 명령이 원치 않는 데이터를 삭제하는 데 정말 능숙하다는 전제에서 작동하므로 추가 하위 쉘을 생성하고 환경 변수를 사용하여 추가 작업을 수행하는 것을 보완합니다. 이는 /proc/net/tcp의 행에 이미 번호가 매겨져 있다는 사실을 활용하여 행 수를 셀 필요가 없도록 합니다. 최종 솔루션은 awk가 여러 프로세스를 생성하는 것보다 더 큰 프로그램을 로드함으로써 발생하는 모든 단점을 상쇄하기에 충분하다고 가정합니다. awk 솔루션에는 간단한 한 줄 별칭 정의에 적합하다는 추가 이점이 있습니다(이는 스크립트를 호출할 필요가 없으므로 추가 셸 프로세스 분기가 없으므로 추가적인 밀리초 이점을 제공한다는 추가 이점을 제공합니다).
답변3
ss -s
자세한 답변을 얻으려면 명령을 사용하십시오 .