aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2024-01-08 12:10:20 +0100
committerDavid Ahern <dsahern@kernel.org>2024-01-22 03:53:19 +0000
commitfbf0acb941507a47e6fbec3eec39500b73c32f53 (patch)
tree3f5ec57b26feb5ca6f773939b458db62b951780b
parent4a6c579ae947cc08dcc12173a040b474c506923e (diff)
downloadiproute2-fbf0acb941507a47e6fbec3eec39500b73c32f53.tar.gz
ss: add option to suppress queue columns
Add a new option `-Q/--no-queues` to ss(8) to suppress the two standard columns Send-Q and Recv-Q. This helps to keep the output steady for monitoring purposes (like listening sockets). Signed-off-by: Christian Göttsche <cgzones@googlemail.com> Signed-off-by: David Ahern <dsahern@kernel.org>
-rw-r--r--man/man8/ss.83
-rw-r--r--misc/ss.c24
2 files changed, 22 insertions, 5 deletions
diff --git a/man/man8/ss.8 b/man/man8/ss.8
index 4ece41fa6..b014cde1d 100644
--- a/man/man8/ss.8
+++ b/man/man8/ss.8
@@ -24,6 +24,9 @@ Output version information.
.B \-H, \-\-no-header
Suppress header line.
.TP
+.B \-Q, \-\-no-queues
+Suppress sending and receiving queue columns.
+.TP
.B \-O, \-\-oneline
Print each socket's data on a single line.
.TP
diff --git a/misc/ss.c b/misc/ss.c
index 5296cabe9..72a841be8 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -75,6 +75,7 @@
int preferred_family = AF_UNSPEC;
static int show_options;
int show_details;
+static int show_queues = 1;
static int show_processes;
static int show_threads;
static int show_mem;
@@ -1425,10 +1426,13 @@ static void sock_state_print(struct sockstat *s)
out("%s", sstate_name[s->state]);
}
- field_set(COL_RECVQ);
- out("%-6d", s->rq);
- field_set(COL_SENDQ);
- out("%-6d", s->wq);
+ if (show_queues) {
+ field_set(COL_RECVQ);
+ out("%-6d", s->rq);
+ field_set(COL_SENDQ);
+ out("%-6d", s->wq);
+ }
+
field_set(COL_ADDR);
}
@@ -5380,6 +5384,7 @@ static void _usage(FILE *dest)
"\n"
" -K, --kill forcibly close sockets, display what was closed\n"
" -H, --no-header Suppress header line\n"
+" -Q, --no-queues Suppress sending and receiving queue columns\n"
" -O, --oneline socket's data printed on a single line\n"
" --inet-sockopt show various inet socket options\n"
"\n"
@@ -5523,6 +5528,7 @@ static const struct option long_opts[] = {
{ "cgroup", 0, 0, OPT_CGROUP },
{ "kill", 0, 0, 'K' },
{ "no-header", 0, 0, 'H' },
+ { "no-queues", 0, 0, 'Q' },
{ "xdp", 0, 0, OPT_XDPSOCK},
{ "mptcp", 0, 0, 'M' },
{ "oneline", 0, 0, 'O' },
@@ -5542,7 +5548,7 @@ int main(int argc, char *argv[])
int state_filter = 0;
while ((ch = getopt_long(argc, argv,
- "dhalBetuwxnro460spTbEf:mMiA:D:F:vVzZN:KHSO",
+ "dhalBetuwxnro460spTbEf:mMiA:D:F:vVzZN:KHQSO",
long_opts, NULL)) != EOF) {
switch (ch) {
case 'n':
@@ -5726,6 +5732,9 @@ int main(int argc, char *argv[])
case 'H':
show_header = 0;
break;
+ case 'Q':
+ show_queues = 0;
+ break;
case 'O':
oneline = 1;
break;
@@ -5824,6 +5833,11 @@ int main(int argc, char *argv[])
if (!show_processes)
columns[COL_PROC].disabled = 1;
+ if (!show_queues) {
+ columns[COL_SENDQ].disabled = 1;
+ columns[COL_RECVQ].disabled = 1;
+ }
+
if (!(current_filter.dbs & (current_filter.dbs - 1)))
columns[COL_NETID].disabled = 1;