| #!/bin/bash |
| # Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file |
| # for details. All rights reserved. Use of this source code is governed by a |
| # BSD-style license that can be found in the LICENSE file. |
| # |
| # Tracks the peak resident memory being used by running the supplied command. |
| # The output is written to the first argument of the script every second. |
| |
| function Logger() { |
| output="$1" |
| while sleep 1 |
| do |
| grep "VmHWM\|Threads" /proc/$pid/status >> $output |
| done |
| } |
| |
| function Exit { |
| kill $lid |
| exit $code |
| } |
| |
| function Kill { |
| kill $lid |
| kill -9 $pid |
| exit -1 |
| } |
| |
| if [ $# -lt 2 ]; then |
| echo "Takes at least two arguments" |
| exit 1 |
| fi |
| OUTPUT_FILE=$1 |
| shift 1 |
| |
| $* & |
| pid=$! |
| |
| Logger $OUTPUT_FILE & |
| lid=$! |
| |
| trap "Exit" EXIT |
| trap "Kill" SIGINT |
| wait $pid |
| code=$? |