2000-11-14 02:36:59 +03:00
|
|
|
#!/bin/sh
|
|
|
|
#
|
2012-05-21 15:12:37 +04:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
2004-04-26 01:07:34 +04:00
|
|
|
|
2000-11-14 02:36:59 +03:00
|
|
|
# Treats the arguments as a command that is to be forked and observed;
|
|
|
|
# e.g.,
|
|
|
|
#
|
|
|
|
# watch.sh ./mozilla -f bloaturls.txt
|
|
|
|
#
|
|
|
|
# Periodically snap-shots the virtual memory info of the process, and
|
|
|
|
# dumps the output to ``watch.out''
|
|
|
|
|
|
|
|
# Clear the output file
|
|
|
|
OUTPUT_FILE=watch.out
|
|
|
|
INTERVAL=10
|
|
|
|
|
|
|
|
while [ $# -gt 0 ]; do
|
|
|
|
case "$1" in
|
|
|
|
-o) OUTPUT_FILE=$2
|
|
|
|
shift 2
|
|
|
|
;;
|
|
|
|
-i) INTERVAL=$2
|
|
|
|
shift 2
|
|
|
|
;;
|
|
|
|
*) break
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
rm -f ${OUTPUT_FILE}
|
|
|
|
|
2001-11-17 08:33:22 +03:00
|
|
|
echo "vmsize vmexe vmlib vmdata vmstk vmrss" > ${OUTPUT_FILE}
|
|
|
|
|
2000-11-14 02:36:59 +03:00
|
|
|
# treat the arguments as the command to execute
|
|
|
|
$* &
|
|
|
|
|
|
|
|
# remember the process ID
|
|
|
|
PID=$!
|
|
|
|
|
|
|
|
while [ -e /proc/${PID} ]; do
|
|
|
|
cat /proc/${PID}/status |\
|
|
|
|
awk '$1=="VmSize:" { vmsize = $2; }
|
|
|
|
$1=="VmData:" { vmdata = $2; }
|
2001-11-17 08:33:22 +03:00
|
|
|
$1=="VmStk:" { vmstk = $2; }
|
|
|
|
$1=="VmExe:" { vmexe = $2; }
|
2000-11-14 02:36:59 +03:00
|
|
|
$1=="VmLib:" { vmlib = $2; }
|
|
|
|
$1=="VmRSS:" { vmrss = $2; }
|
2001-11-17 08:33:22 +03:00
|
|
|
END { print vmsize, vmexe, vmlib, vmdata, vmstk, vmrss; }' >> ${OUTPUT_FILE}
|
2000-11-14 02:36:59 +03:00
|
|
|
sleep ${INTERVAL}
|
|
|
|
done
|