1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #!/usr/bin/env bash
- set -um
- [ $# -gt 0 ] || { sed -n '2,/^#$/ s/^# //p' <"$0"; exit 1; }
- pgid=`ps -o pgid= $$`
- command="$@"
- if [ $pgid = $(ps -o pgid= $(ps -o ppid= $$)) ]; then
- cmd=
- set -- "$0" "$@"
- for a; do cmd+="'${a//"'"/"'\\''"}' "; done
- exec bash -i -c "$cmd"
- fi
- case `uname` in
- Darwin|*BSD) sizes() { /bin/ps -o rss= -g $1; } ;;
- Linux) sizes() { /bin/ps -o rss= -$1; } ;;
- *) echo "`uname`: unsupported operating system" >&2; exit 2 ;;
- esac
- (
- peak=0
- while sizes=`sizes $pgid`
- do
- set -- $sizes
- sample=$((${@/#/+}))
- let peak="sample > peak ? sample : peak"
- sleep 0.1
- done
- echo "memusg \`$command\`: peak=$peak kiloBytes" >> "peak.mem.usg"
- ) &
- monpid=$!
- echo "running: exec $@"
- exec "$@"
|