aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/arcstat
diff options
context:
space:
mode:
authorIsaac Huang <[email protected]>2014-10-28 21:35:10 -0600
committerBrian Behlendorf <[email protected]>2014-11-14 15:32:30 -0800
commita82db4e15fcd882898595a40bba0d3b08548cd95 (patch)
tree52724f1bb30cdf5b43bb0340158abddde6b4a391 /cmd/arcstat
parent1c49ac575d26a072b53c93fcdf6bd0655343ef22 (diff)
Print header properly when terminal resizes
Added a handler for SIGWINCH, so that one header is printed per screen even when the terminal resizes. Signed-off-by: Isaac Huang <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #2847
Diffstat (limited to 'cmd/arcstat')
-rwxr-xr-xcmd/arcstat/arcstat.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/cmd/arcstat/arcstat.py b/cmd/arcstat/arcstat.py
index a5e0653b3..b516cf285 100755
--- a/cmd/arcstat/arcstat.py
+++ b/cmd/arcstat/arcstat.py
@@ -51,7 +51,7 @@ import re
import copy
from decimal import Decimal
-from signal import signal, SIGINT, SIG_DFL
+from signal import signal, SIGINT, SIGWINCH, SIG_DFL
cols = {
# HDR: [Size, Scale, Description]
@@ -239,11 +239,21 @@ def get_terminal_lines():
except:
pass
+def update_hdr_intr():
+ global hdr_intr
+
+ lines = get_terminal_lines()
+ if lines and lines > 3:
+ hdr_intr = lines - 3
+
+def resize_handler(signum, frame):
+ update_hdr_intr()
+
+
def init():
global sint
global count
global hdr
- global hdr_intr
global xhdr
global opfile
global sep
@@ -313,9 +323,7 @@ def init():
if xflag:
hdr = xhdr
- lines = get_terminal_lines()
- if lines:
- hdr_intr = lines - 3
+ update_hdr_intr()
# check if L2ARC exists
snap_stats()
@@ -426,6 +434,7 @@ def main():
count_flag = 1
signal(SIGINT, SIG_DFL)
+ signal(SIGWINCH, resize_handler)
while True:
if i == 0:
print_header()
@@ -439,7 +448,7 @@ def main():
break
count -= 1
- i = 0 if i == hdr_intr else i + 1
+ i = 0 if i >= hdr_intr else i + 1
time.sleep(sint)
if out: