ss - định dạng đầu ra tiện ích thống kê ổ cắm linux


21

Khi sử dụng ssvới -ptùy chọn, user/pid/fdcột nhảy bên dưới dòng cụ thể. Ví dụ, đây là những gì tôi thực sự thấy:

# 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))

Định dạng đầu ra ưa thích :

# 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))

Để xác nhận rằng không có ngắt dòng tôi đã thử điều này:

# 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))$

Và thực sự bạn có thể thấy rằng không có ai, nhưng bây giờ, thật kỳ lạ, định dạng đầu ra là cách tôi muốn. Ai đó có thể giải thích những gì đang xảy ra ở đây? Làm thế nào tôi có thể đạt được định dạng ưa thích của tôi?

Đây là điều duy nhất khiến tôi dừng lại từ di cư từ netstatđến ss.

Câu trả lời:


10

Vì lý do tại sao vv

ss, một phần của bộ sưu tập tiện ích iproute2 trong nhân Linux, sử dụng yêu cầu ioctl () để lấy chiều rộng hiện tại của thiết bị đầu cuối.

Tuy nhiên; toàn bộ chiều rộng được sử dụng cho các trường «khác» và trường quy trình được nén vào dòng tiếp theo.

Bạn có thể xem điều này bằng ví dụ (khi bị giới hạn với thiết bị đầu cuối):

script ss.txt
ss -nlup4
exit

Sau đó mở rộng cửa sổ thiết bị đầu cuối của bạn và cat ss.txt.

Lý do tại sao

ss -nulp4 | cat -A

«Hoạt động» là vì tiện ích nhận ra nếu nó ghi vào tty hay không :

if (isatty(STDOUT_FILENO)) {

}

Như bạn có thể thấy từ dòng trước trong chiều rộng mặc định của mã nguồn được đặt thành 80. Do đó, nếu thiết bị đầu cuối của bạn ở mức 130 cột và bạn làm:

ss -nulp4 | cat

nó nhận ra đầu ra không phải là một tty (mà là một đường ống) và các trường khác được nhồi nhét vào 80 cột, trong khi trường quy trình được viết sau 80 cột này. Nhưng vì thiết bị đầu cuối của bạn rộng hơn 80 cột và có chỗ cho quá trình nhập, nó được hiển thị trong một dòng.

Điều tương tự cũng xảy ra ví dụ:

ss -nulp4 > ss.txt

Về cách «đạt được định dạng ưa thích của tôi», một cách có thể không phù hợp là làm một việc gì đó theo hướng (tùy thuộc vào thiết bị đầu cuối):

stty cols 100
ss -nlup4

Giải thích tuyệt vời và thủ thuật hay với thiết lập cols stty đó. Cảm ơn nhiều!
monsune

Giải thích tốt đẹp, nhưng sử dụng column -tdường như là cách đơn giản nhất.
pevik

18

Sau đây có thể hữu ích để thay đổi đầu ra:

ss -ltunp | column -t 

1
Đây nên là một nhận xét về câu trả lời. Bạn có đủ danh tiếng để thêm ý kiến, xin vui lòng sử dụng nó.
hóa dầu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.