ss
with -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
그러면 프로그램 이름과 테이블 형식별로 출력이 정렬됩니다.