mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-26 00:56:38 +00:00
Quote scalar arguments and use arrays for command option lists so paths and options retain their boundaries. Preserve intentional version-field splitting with narrow documented suppressions. Also handle GNU getopt output without losing quoted arguments and remove warnings about masked statuses, unused values and ambiguous test expressions.
89 lines
1.9 KiB
Bash
Executable File
89 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
############################################################################
|
|
#
|
|
# Script for monitoring system-wide memory usage.
|
|
#
|
|
# Copyright (C) 2009 Bart Van Assche <bvanassche@acm.org>.
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation, version 2
|
|
# of the License.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
############################################################################
|
|
|
|
#########################
|
|
# Function definitions #
|
|
#########################
|
|
|
|
function usage {
|
|
echo "Usage: $0 [-h] [-i <interval>]"
|
|
echo " -h - display this information."
|
|
echo " -i - monitoring interval in seconds."
|
|
}
|
|
|
|
|
|
#########################
|
|
# Default settings #
|
|
#########################
|
|
|
|
interval=10
|
|
|
|
|
|
#########################
|
|
# Argument processing #
|
|
#########################
|
|
|
|
getopt_args=$(/usr/bin/getopt -o "hi:" -- "$@") || {
|
|
usage
|
|
exit 1
|
|
}
|
|
# GNU getopt emits shell-quoted arguments; eval restores them losslessly.
|
|
# shellcheck disable=SC2294
|
|
eval set -- "$getopt_args"
|
|
while [ "$1" != "${1#-}" ]
|
|
do
|
|
case "$1" in
|
|
'-i') interval="$2"; shift; shift;;
|
|
'--') shift;;
|
|
*) usage; exit 1;;
|
|
esac
|
|
done
|
|
|
|
if [ "$#" != 0 ] || ! [[ "${interval}" =~ ^0*[1-9][0-9]*$ ]]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
interval="${interval#"${interval%%[!0]*}"}"
|
|
|
|
|
|
####################
|
|
# Performance test #
|
|
####################
|
|
|
|
printf "%-10s " "Time"
|
|
cat /proc/meminfo |
|
|
while read -r label number _
|
|
do
|
|
printf " %10s" "${label%:}"
|
|
done
|
|
echo
|
|
|
|
while true
|
|
do
|
|
printf "%-10d" "$(date +%s)"
|
|
cat /proc/meminfo |
|
|
while read -r label number _
|
|
do
|
|
printf " %10d" "${number}"
|
|
done
|
|
echo
|
|
sleep "${interval}"
|
|
done
|