[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240108111020.12205-1-cgzones@googlemail.com>
Date: Mon, 8 Jan 2024 12:10:20 +0100
From: Christian Göttsche <cgzones@...glemail.com>
To: netdev@...r.kernel.org
Subject: [PATCH] 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@...glemail.com>
---
v2: rebase to iproute2-next
---
man/man8/ss.8 | 3 +++
misc/ss.c | 24 +++++++++++++++++++-----
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/man/man8/ss.8 b/man/man8/ss.8
index 4ece41fa..b014cde1 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 c220a075..188a8ff9 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);
}
@@ -5378,6 +5382,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"
@@ -5521,6 +5526,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' },
@@ -5540,7 +5546,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':
@@ -5724,6 +5730,9 @@ int main(int argc, char *argv[])
case 'H':
show_header = 0;
break;
+ case 'Q':
+ show_queues = 0;
+ break;
case 'O':
oneline = 1;
break;
@@ -5819,6 +5828,11 @@ int main(int argc, char *argv[])
if (ssfilter_parse(¤t_filter.f, argc, argv, filter_fp))
usage();
+ 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;
--
2.43.0
Powered by blists - more mailing lists