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列があり、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
これにより、プログラム名と表形式で出力がソートされます。