ss - Linux 소켓 통계 유틸리티 출력 형식

ss - Linux 소켓 통계 유틸리티 출력 형식

sswith -p옵션 을 사용 하면 user/pid/fd열이 특정 행 아래로 이동합니다. 예를 들어, 제가 실제로 본 것은 다음과 같습니다.

# ss -nulp4
State      Recv-Q Send-Q                                           Local Address:Port                                             Peer Address:Port 
UNCONN     0      0                                                            *:20000                                                       *:*      
users:(("perl",pid=9316,fd=6))
UNCONN     0      0                                                            *:10000                                                       *:*      
users:(("perl",pid=9277,fd=6))
UNCONN     0      0                                               192.168.100.10:53                                                          *:*      
users:(("named",pid=95,fd=517),("named",pid=95,fd=516))
UNCONN     0      0                                                    127.0.0.1:53                                                          *:*      
users:(("named",pid=95,fd=515),("named",pid=95,fd=514))

선호하는 출력 형식:

# ss -nulp4
State      Recv-Q Send-Q                                           Local Address:Port                                             Peer Address:Port 
UNCONN     0      0                                                            *:20000                                                       *:*      users:(("perl",pid=9316,fd=6))
UNCONN     0      0                                                            *:10000                                                       *:*      users:(("perl",pid=9277,fd=6))
UNCONN     0      0                                               192.168.100.10:53                                                          *:*      users:(("named",pid=95,fd=517),("named",pid=95,fd=516))
UNCONN     0      0                                                    127.0.0.1:53                                                          *:*      users:(("named",pid=95,fd=515),("named",pid=95,fd=514))

개행 문자가 없는지 확인하기 위해 다음을 시도했습니다.

# ss -nulp4 | cat -A
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port $
UNCONN     0      0                         *:20000                    *:*      users:(("perl",pid=9316,fd=6))$
UNCONN     0      0                         *:10000                    *:*      users:(("perl",pid=9277,fd=6))$
UNCONN     0      0            192.168.100.10:53                       *:*      users:(("named",pid=95,fd=517),("named",pid=95,fd=516))$
UNCONN     0      0                 127.0.0.1:53                       *:*      users:(("named",pid=95,fd=515),("named",pid=95,fd=514))$

실제로는 그렇지 않다는 것을 알 수 있지만 지금은 이상하게도 출력 형식이 정확히 내가 원하는 방식입니다. 무슨 일인지 설명해 줄 수 있는 사람이 있나요? 내가 선호하는 형식을 어떻게 얻을 수 있나요?

netstat이것이 제가 로 마이그레이션하는 것을 막는 유일한 이유입니다 ss.

답변1

다음 중 하나가 출력을 변경하는 데 도움이 될 수 있습니다.

ss -ltunp | column -t 

답변2

왜 기다려요.

ss, ~의 일부IP 경로 2유틸리티 컬렉션Linux 커널에서는 다음을 사용합니다.ioctl()필요하다터미널의 현재 너비를 가져옵니다.

그러나 전체 너비는 다음 용도로 사용됩니다."다른"필드와 프로시저 필드는 다음 줄로 압축됩니다.

예를 들어 다음을 사용하여 이를 볼 수 있습니다(터미널에서 제한된 경우).

script ss.txt
ss -nlup4
exit

그 다음에확장하다터미널 창과 cat ss.txt.

이유

ss -nulp4 | cat -A

"일하다"유틸리티가 인식할 것이기 때문입니다.tty에 쓸지 여부:

if (isatty(STDOUT_FILENO)) {

}

소스 코드의 이전 줄에서 볼 수 있듯이 기본 너비는 80으로 설정되어 있습니다. 따라서 터미널에 130개의 열이 있고 다음을 수행하는 경우:

ss -nulp4 | cat

출력이 tty(파이프)가 아닌 것을 인식하고다른필드는 80개의 열로 채워져 있지만공정 영역이 80개 열 뒤에 쓰세요. 하지만 터미널이더 넓게그런 다음 80개의 열이 있고 한 행에 나타나는 프로세스 항목을 위한 공간이 있습니다.

예를 들어:

ss -nulp4 > ss.txt

어떻게«내가 좋아하는 형식 구현하기»적절하지 않을 수 있는 한 가지 접근 방식은 다음과 같은 작업을 수행하는 것입니다(터미널에 따라 다름).

stty cols 100
ss -nlup4

답변3

출력 형식을 순서대로 얻으려면 다음을 시도해 보십시오.

sudo ss -tulnp | sort -k7 | awk "{print substr(\$7,1,70),\$1,\$5}" | column -t

그러면 프로그램 이름과 테이블 형식별로 출력이 정렬됩니다.

관련 정보