Já mám se ss permanentní problémy s terminálem, kvůli kterým je výpis oproti netstatu velmi nepřehledný. Zkoušel jsem to v Terminátoru (libvte) i xtermu a ss z Debianu Unstable, 10, 9 a Ubuntu 18.04 (přes SSH).
1) "ss -tlpn|less" za poslední sloupec přidá hromadu mezer, takže ten řádek má asi 160 znaků a na terminálu o šířkách 110-160 se zalomí, i když by nemusel. Výpis je pak prokládaný prázdnem. Obrázek: https://jenda.hrach.eu/img-ext/ss-less.png (Debian Unstable)
2) Někdy, nejspíš v okamžiku kdy by "ss" bez parametrů zobrazilo nějakou dlouhou cestu, jsou sloupce příšerně roztažené (na šířku té dlouhé cesty), i když dělám -tlpn, které dlouhé cesty skryje a ukazuje jenom věci s krátkými čísly portů. Opět, je složité řádek sledovat, a zalomí se i když by nemusel. Obrázek: https://jenda.hrach.eu/img-ext/ss-libvirt.png (Debian 9 + libvirt s KVM)
Při hledání řešení jsem nic nenašel, ale dozvěděl jsem se o workaroundu pomocí "ss -tlpn | column -t", který ale zase rozbije hlavičku a asi obecně věci s mezerama.
Ty mezery na konci se mi nedějí. Vypadá to, jako bys měl nějak špatně nastavený terminál – mně se totiž výpis přizpůsobuje jeho šířce – tím se vysvětluje ten nadbytek mezer.
Ahoj, podobny problem jsme resili v RHEL, bug s nazvem 'ss: output is consistently too wide'. Opraveno to bylo v rhel-8 a v upstream verzi 4.15. Zkousel jsem tvuj prikaz na posledni upstream verzi 5.3, jak na Debianu testing, tak na Fedore 30, tak na RHEL 8 a nejsem schopen to reprodukovat. Reprodukuji to jen na rhel-7 s iproute verze 4.11, kde ten bug opraveny jeste nebyl.
Dělá mi to i s upstreamovým iproute2-5.3.0 a dělá to i na jiném počítači kam jsem připojen přes VNC (abych eliminoval potenciální chybné nastavení svého terminálu, který se potenciálně může přenášet i přes SSH; furt to může být postiženo mým kompilátorem, .vimrc a .bashrc, kde ale není vůbec nic podezřelého).
Co horšího, napsal jsem "qemu-system-x86_64 -enable-kvm -m 2048 -cdrom Fedora-Workstation-Live-x86_64-31-1.9.iso", zmáčkl Try Fedora, spustil terminal, maximalizoval, napsal sudo -i, ss -tlpna|less, a objevilo se tohle: https://jenda.hrach.eu/img-ext/ss-fedora.png (rozlišení obrazovky v tom qemu je 1024x768, $COLUMNS 126, $LINES 38)
Straší mi v počítači?!
Na to by mohl být zajímavý https://github.com/nushell/nushell :)
V článku je jen letmo zmíněno, že je ss rychlejší, ale při větším počtu socketů může být ten rozdíl propastný. Před časem jsem řešil jeden problém, k jehož reprodukci bylo potřeba vytvořit velký počet spojení. Výsledkem bylo asi 200000 socketů, z nichž zajímavé byly jen ty, které zůstaly ve stavu FIN-WAIT2 (obvykle byly dva). Výpis pomocí netstat trval kolem dvou minut, kompletní výpis pomocí ss (do souboru) asi půl sekundy. Při použití filtru podle stavu to bylo samozřejmě ještě rychlejší.
Drouhou zásadní výhodou je rozsah poskytovaných informací. Třeba " ss -nteim" mi ukáže detailní informace o TCP spojeních, která bych s netstatem neměl šanci získat.
Vystup SS aspon k necemu vypada. Ale treba "ip r" me stve neustale. "route" vypsalo prehlednou tabulku, ve ktere se dalo vyznat na prvni pohled.
Nebo se da "ip r" take nejak presvedcit k prehlednemu vypisu?
martin@martin:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.123.1.254 0.0.0.0 UG 100 0 0 enxe04f43921dee 0.0.0.0 10.123.1.254 0.0.0.0 UG 600 0 0 wlp2s0 10.123.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enxe04f43921dee 10.123.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enxe04f43921dee 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-efd66c53f31c 172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-cf2262616016 172.21.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-25736ef08b0a 172.22.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-e4614e59fc01 martin@martin:~$ martin@martin:~$ ip r default via 10.123.1.254 dev enxe04f43921dee proto dhcp metric 100 default via 10.123.1.254 dev wlp2s0 proto dhcp metric 600 10.123.1.0/24 dev enxe04f43921dee proto kernel scope link src 10.123.1.102 metric 100 10.123.1.0/24 dev wlp2s0 proto kernel scope link src 10.123.1.106 metric 600 169.254.0.0/16 dev enxe04f43921dee scope link metric 1000 172.18.0.0/16 dev docker0 proto kernel scope link src 172.18.0.1 linkdown 172.19.0.0/16 dev br-efd66c53f31c proto kernel scope link src 172.19.0.1 linkdown 172.20.0.0/16 dev br-cf2262616016 proto kernel scope link src 172.20.0.1 linkdown 172.21.0.0/16 dev br-25736ef08b0a proto kernel scope link src 172.21.0.1 linkdown 172.22.0.0/16 dev br-e4614e59fc01 proto kernel scope link src 172.22.0.1 linkdown martin@martin:~$
V ramci balika iproute2 byva zvycajne nainstalovany aj routel. Je to len nejaky wrapper okolo samotneho ip route. Jediny problem je, ze by default ukazuje obsah vsetkych routovacich tabuliek:
# routel
target gateway source proto scope dev tbl
default 10.0.2.2 tap0
10.0.2.0 24 10.0.2.100 kernel link tap0
10.0.2.0 broadcast 10.0.2.100 kernel link tap0 local
10.0.2.100 local 10.0.2.100 kernel host tap0 local
10.0.2.255 broadcast 10.0.2.100 kernel link tap0 local
127.0.0.0 broadcast 127.0.0.1 kernel link lo local
127.0.0.0 8 local 127.0.0.1 kernel host lo local
127.0.0.1 local 127.0.0.1 kernel host lo local
127.255.255.255 broadcast 127.0.0.1 kernel link lo local
fd00:: 64 kernel tap0
fe80:: 64 kernel tap0
default fe80::2 ra tap0
::1 local kernel lo local
fd00::d070:5ff:fefe:91f8 local kernel tap0 local
fe80::d070:5ff:fefe:91f8 local kernel tap0 local
ff00:: 8 tap0 local
Pouzivatela vacsinou zaujima iba tabulka main, takze musis byt trosku specifickejsi:
# routel main
target gateway source proto scope dev tbl
default 10.0.2.2 tap0
10.0.2.0 24 10.0.2.100 kernel link tap0
Za nazvom tabulky este mozes pridat ostatne argumenty ktore by si normalne pouzil pre ip route.
WOW tak to je poprvé co se za svůj život musím přiznat, že jsem se nedokázal držet novinek. Popravdě jsem jeden z těch co prosazují iproute2 ale zároveň jsem nikdy nezjistil, že je zde náhrada za netstat.
Konečně to vše dává smysl. Mnohokrát děkuji, za tento článek. Každopádně to ukazuje že je zde něco špatně. Asi by měla být větší snaha propagovat tyto "nové" příkazy.