#!/bin/bash # **tools/dstat.sh** - Execute instances of DStat to log system load info # # Multiple instances of DStat are executed in order to take advantage of # incompatible features, particularly CSV output and the "top-cpu-adv" and # "top-io-adv" flags. # # Assumes: # - dstat command is installed # Retrieve log directory as argument from calling script. LOGDIR=$1 DSTAT_TOP_OPTS="--top-cpu-adv --top-io-adv --top-mem" if dstat --version | grep -q 'pcp-dstat' ; then # dstat is unmaintained, and moving to a plugin of performance # co-pilot. Fedora 29 for example has rolled this out. It's # mostly compatible, except for a few options which are not # implemented (yet?) DSTAT_TOP_OPTS="" fi # Command line arguments for primary DStat process. DSTAT_OPTS="-tcmndrylpg ${DSTAT_TOP_OPTS} --swap --tcp" # Command-line arguments for secondary background DStat process. DSTAT_CSV_OPTS="-tcmndrylpg --tcp --output $LOGDIR/dstat-csv.log" # Execute and background the secondary dstat process and discard its output. dstat $DSTAT_CSV_OPTS >& /dev/null & # Execute and background the primary dstat process, but keep its output in this # TTY. dstat $DSTAT_OPTS & # Catch any exit signals, making sure to also terminate any child processes. trap "kill -- -$$" EXIT # Keep this script running as long as child dstat processes are alive. wait