Browse Source

Introduce background mode.

check-vt100
Peter Gielda 7 years ago
parent
commit
fba5184a9d
  1. 16
      README.md
  2. 50
      sargraph.py

16
README.md

@ -2,17 +2,21 @@
This is a simple python tool that uses sysstat (sar) to plot cpu and ram usage.
Best used with screen:
Usage:
```
$ python sargraph.py [session_name] [command] [arg]
```
Background use (requires screen):
```
$ screen -dmSL chart python sargraph.py
$ python sargraph.py chart start
$ sleep 1
$ screen -S chart -X stuff "label1\n"
$ python sargraph.py chart label "label1"
$ sleep 1
$ screen -S chart -X stuff "label2\n"
$ python sargraph.py chart label "label2"
$ sleep 1
$ screen -S chart -X stuff "q\n"
$ sleep 3
$ python sargraph.py chart stop
```
Or just:

50
sargraph.py

@ -27,6 +27,50 @@ def merge_dicts(x, y):
res.update(y)
return res
if len(sys.argv) > 1:
sid = sys.argv[1]
cmd = ""
if len(sys.argv) > 2:
cmd = sys.argv[2]
else:
print("Error: command not provided.")
sys.exit(1)
if cmd == "label" and len(sys.argv) != 4:
print("Error: label command requires an additional parameter")
sys.exit(1)
if cmd == "label":
label = sys.argv[3]
try:
p = subprocess.Popen(["screen", "-v"], stdout=subprocess.PIPE)
except:
print("Error: 'screen' tool not found!")
sys.exit(1)
if p.stdout.readline().decode().split(" ")[0] != "Screen":
print "Error: 'screen' tool returned unknown output!"
sys.exit(1)
if cmd == "start":
print("Starting sargraph session '%s'" % sid)
p = subprocess.Popen(["screen", "-dmSL", sid, os.path.realpath(__file__)])
while p.poll() is None:
time.sleep(0.1)
elif cmd == "stop":
print("Terminating sargraph session '%s'" % sid)
p = subprocess.Popen(["screen", "-S", sid, "-X", "stuff", "q\n"])
while p.poll() is None:
time.sleep(0.1)
time.sleep(3) # TODO: work on that
elif cmd == "label":
print("Adding label '%s' to sargraph session '%s'." % (label, sid))
p = subprocess.Popen(["screen", "-S", sid, "-X", "stuff", "%s\n" % label])
while p.poll() is None:
time.sleep(0.1)
else:
print "Error: Unknown parameter '%s'" % cmd
sys.exit(1)
sys.exit(1)
my_env = os.environ
my_env["S_TIME_FORMAT"] = "ISO"
@ -178,6 +222,12 @@ while 1:
if die:
break
if i == 0:
f.close()
g("quit")
time.sleep(1)
sys.exit(0)
AVERAGE_LOAD = AVERAGE_LOAD / float(i)
MAX_USED_RAM = MAX_USED_RAM / 1024.0 / 1024.0

Loading…
Cancel
Save