diff options
author | Ryan Moeller <[email protected]> | 2020-10-21 17:09:14 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2020-10-21 14:09:14 -0700 |
commit | 2aaab887bb8693722f601c0576462cc82a47698f (patch) | |
tree | 0abef5d27223d2ba4f3435f948c7461b3a8912a9 /cmd | |
parent | e53d678d4ad596a310d51dab107bb6fa97e2b226 (diff) |
arcstat: Add -a and -p options from FreeNAS
Added -a option to automatically print all valid statistics.
Added -p option to suppress scaling of printed data.
Reviewed-by: George Melikov <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Authored by: Nick Principe <[email protected]>
Ported-by: Ryan Moeller <[email protected]>
Signed-off-by: Ryan Moeller <[email protected]>
Closes #11090
Diffstat (limited to 'cmd')
-rwxr-xr-x | cmd/arcstat/arcstat.in | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in index df0eb0c22..40ab975c6 100755 --- a/cmd/arcstat/arcstat.in +++ b/cmd/arcstat/arcstat.in @@ -134,12 +134,13 @@ opfile = None sep = " " # Default separator is 2 spaces version = "0.4" l2exist = False -cmd = ("Usage: arcstat [-hvx] [-f fields] [-o file] [-s string] [interval " +cmd = ("Usage: arcstat [-havxp] [-f fields] [-o file] [-s string] [interval " "[count]]\n") cur = {} d = {} out = None kstat = None +pretty_print = True if sys.platform.startswith('freebsd'): @@ -197,6 +198,7 @@ def detailed_usage(): def usage(): sys.stderr.write("%s\n" % cmd) sys.stderr.write("\t -h : Print this help message\n") + sys.stderr.write("\t -a : Print all possible stats\n") sys.stderr.write("\t -v : List all possible field headers and definitions" "\n") sys.stderr.write("\t -x : Print extended stats\n") @@ -204,6 +206,7 @@ def usage(): sys.stderr.write("\t -o : Redirect output to the specified file\n") sys.stderr.write("\t -s : Override default field separator with custom " "character or string\n") + sys.stderr.write("\t -p : Disable auto-scaling of numerical fields\n") sys.stderr.write("\nExamples:\n") sys.stderr.write("\tarcstat -o /tmp/a.log 2 10\n") sys.stderr.write("\tarcstat -s \",\" -o /tmp/a.log 2 10\n") @@ -262,10 +265,14 @@ def print_values(): global hdr global sep global v + global pretty_print - sys.stdout.write(sep.join( - prettynum(cols[col][0], cols[col][1], v[col]) for col in hdr)) + if pretty_print: + fmt = lambda col: prettynum(cols[col][0], cols[col][1], v[col]) + else: + fmt = lambda col: v[col] + sys.stdout.write(sep.join(fmt(col) for col in hdr)) sys.stdout.write("\n") sys.stdout.flush() @@ -273,9 +280,14 @@ def print_values(): def print_header(): global hdr global sep + global pretty_print - sys.stdout.write(sep.join("%*s" % (cols[col][0], col) for col in hdr)) + if pretty_print: + fmt = lambda col: "%*s" % (cols[col][0], col) + else: + fmt = lambda col: col + sys.stdout.write(sep.join(fmt(col) for col in hdr)) sys.stdout.write("\n") @@ -312,8 +324,10 @@ def init(): global sep global out global l2exist + global pretty_print desired_cols = None + aflag = False xflag = False hflag = False vflag = False @@ -322,14 +336,16 @@ def init(): try: opts, args = getopt.getopt( sys.argv[1:], - "xo:hvs:f:", + "axo:hvs:f:p", [ + "all", "extended", "outfile", "help", "verbose", "separator", - "columns" + "columns", + "parsable" ] ) except getopt.error as msg: @@ -338,6 +354,8 @@ def init(): opts = None for opt, arg in opts: + if opt in ('-a', '--all'): + aflag = True if opt in ('-x', '--extended'): xflag = True if opt in ('-o', '--outfile'): @@ -353,6 +371,8 @@ def init(): if opt in ('-f', '--columns'): desired_cols = arg i += 1 + if opt in ('-p', '--parsable'): + pretty_print = False i += 1 argv = sys.argv[i:] @@ -397,6 +417,12 @@ def init(): incompat) usage() + if aflag: + if l2exist: + hdr = cols.keys() + else: + hdr = [col for col in cols.keys() if not col.startswith("l2")] + if opfile: try: out = open(opfile, "w") |