我很习惯 的输出netstat -taulpen
,虽然我不知道所有标志具体起什么作用,但它提供了一个很好读的网络程序表,当以 sudo 身份运行时可以显示所有进程名称以及它们监听的地址和套接字等。
ss
我接近的是:
$ ss -tlnp
-n, --numeric don't resolve service names
-l, --listening display listening sockets
-p, --processes show process using socket
-t, --tcp display only TCP sockets
你可以想象这会产生如下输出:我已手动将终端输出中的各行换行:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:139 *:*
users:(("smbd",874,33))
LISTEN 0 5 127.0.1.1:53 *:*
users:(("dnsmasq",1528,5))
LISTEN 0 128 127.0.0.1:631 *:*
users:(("cupsd",782,11))
所以我的问题是我的终端仿真器中有很多空间,但是 ss 非常坚定地将前几列换行到 100% 宽度,而其余列会脱落并换行,即使 xxd 中没有显示文字换行符。
答案1
1)通过管道传输一个剥离 tty 宽度上下文的程序,例如cat
$ ss -tlnp | less
$ ss -tlnp | cat
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:139 *:* users:(("smbd",874,33))
LISTEN 0 5 127.0.1.1:53 *:* users:(("dnsmasq",1528,5))
LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",782,11))
2)说谎关于你的 tty 宽度stty
:
我不认为这是一个解决方案,因为它涉及手动修改环境以在程序上下文中实现效果。
但这确实有效,我想我永远不会费心去使用它:
# Tell the environment this terminal is only 80 chars wide
# (or however slim you need to view the overflow)
$ stty cols 80
$ ss -tlnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:139 *:* users:(("smbd",874,33))
LISTEN 0 5 127.0.1.1:53 *:* users:(("dnsmasq",1528,5))
LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",782,11))