#!/usr/bin/env bash # inspired by https://gist.github.com/nicolasazrak/32d68ed6c845a095f75f037ecc2f0436 # Takes two arguments: # $1 arguments to pass to pgrep # $2 process name to pgrep for function gnuplot_wrapper() { TEMP_DIR="$(mktemp --directory /tmp/tmp.koreaderXXX)" LOG="${TEMP_DIR}/memory.log" SCRIPT_PNG="${TEMP_DIR}/script_png.p" SCRIPT_SHOW="${TEMP_DIR}/script_show.p" IMAGE_PNG="${TEMP_DIR}/graph.png" echo "Memory plot output to ${TEMP_DIR}" cat >"${SCRIPT_PNG}" <"${LOG}" gnuplot "${SCRIPT_SHOW}" & GNUPLOT_PID=$! cat >"${SCRIPT_SHOW}" </dev/null 2>&1") if (GPVAL_SYSTEM_ERRNO != 0) { break } } EOL while ps -p "${PROG_PID}" -o pid=,vsz=,rss= >>"${LOG}"; do sleep 1 done wait ${GNUPLOT_PID} gnuplot "${SCRIPT_PNG}" } gnuplot_wrapper "$@" # vim: sw=4