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列があり、1行に表示されるプロセス項目のためのスペースがあります。

たとえば、

ss -nulp4 > ss.txt

どのように«私の好きな形式を実装する»適切ではないかもしれない1つのアプローチは、次のことを行うことです(ターミナルによって異なります)。

stty cols 100
ss -nlup4

答え3

出力形式を順番に取得するには、以下を試してください。

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

これにより、プログラム名と表形式で出力がソートされます。

関連情報