From 4e1c9f9c48186f61b5fbe1dd8bc150d48a9b9431 Mon Sep 17 00:00:00 2001 From: Isaac Huang Date: Mon, 10 Mar 2014 23:27:56 -0600 Subject: [PATCH] Make arcstat.py default to one header per screen Today arcstat.py prints one header every hdr_intr (20 by default) lines. It would be more consistent with out utilities like vmstat if hdr_intr defaulted to terminal window size, i.e. one header per screenful of outputs. Signed-off-by: Isaac Huang Signed-off-by: Prakash Surya Signed-off-by: Brian Behlendorf Closes #2183 --- cmd/arcstat/arcstat.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cmd/arcstat/arcstat.py b/cmd/arcstat/arcstat.py index 8fe1331afa..5a09128538 100755 --- a/cmd/arcstat/arcstat.py +++ b/cmd/arcstat/arcstat.py @@ -230,11 +230,20 @@ def print_header(): sys.stdout.write("%*s%s" % (cols[col][0], col, sep)) sys.stdout.write("\n") +def get_terminal_lines(): + try: + import fcntl, termios, struct + data = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, '1234') + sz = struct.unpack('hh', data) + return sz[0] + except: + pass def init(): global sint global count global hdr + global hdr_intr global xhdr global opfile global sep @@ -304,6 +313,10 @@ def init(): if xflag: hdr = xhdr + lines = get_terminal_lines() + if lines: + hdr_intr = lines - 3 + # check if L2ARC exists snap_stats() l2_size = cur.get("l2_size")