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


21

option ss과 함께 사용하면 열이 특정 줄 아래로 이동합니다. 예를 들어 이것이 실제로보고있는 것입니다.-puser/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))$

그리고 실제로는 아무것도 없다는 것을 알 수 있지만, 이상하게도 출력 형식은 내가 원했던 방식입니다. 누군가 여기서 무슨 일이 일어나고 있는지 설명해 주시겠습니까? 선호하는 형식을 어떻게 얻을 수 있습니까?

이 마이그레이션에서 저를 막는 유일한 일 netstatss.

답변:


10

왜 등등에 관해서

ssLinux 커널에서 iproute2 유틸리티 콜렉션의 일부인 ioctl () 요청 을 사용하여 터미널의 현재 너비를 가져옵니다.

하나; 전체 너비는 «other» 필드에 사용되며 프로세스 필드는 다음 줄로 압착됩니다.

예를 들어 (on 터미널로 제한이있을 때) 이것을 볼 수 있습니다.

script ss.txt
ss -nlup4
exit

그런 다음 터미널 창을 넓히 십시오 cat ss.txt.

그 이유 이유

ss -nulp4 | cat -A

«works» 는 유틸리티 가 tty에 쓰는지 여부를 인식하기 때문입니다 .

if (isatty(STDOUT_FILENO)) {

}

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

ss -nulp4 | cat

출력이 tty가 아닌 파이프에 대한 것으로 인식하고 다른 필드는 80 열로 채워지고 프로세스 필드 는 80 열 뒤에 쓰여집니다. 그러나 터미널이 80 열 보다 넓고 프로세스 입력을위한 공간이 있으면 한 줄로 표시됩니다.

예를 들어 동일합니다.

ss -nulp4 > ss.txt

«내가 선호하는 형식을 달성 하는 방법 »에 대해 부적절한 방법 중 하나는 (터미널에 따라) 방향으로 무언가를 수행하는 것입니다.

stty cols 100
ss -nlup4

stty cols 설정으로 멋진 설명과 멋진 트릭. 많은 감사합니다!
monsune

좋은 설명이지만 사용 column -t이 가장 간단한 것처럼 보입니다.
pevik

18

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

ss -ltunp | column -t 

1
답변에 대한 의견이어야합니다. 의견을 추가 할만한 명성이 있으니 사용하십시오.
grochmal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.