Можно включить отладку IO через echo 1 > /proc/sys/vm/block_dump
и затем смотрите сообщения отладки в/var/log/syslog. Это имеет преимущество получения некоторого типа файла журнала с прошлыми операциями тогда как iotop
только показывает текущее действие.
Благодаря @Gilles я наконец видел то, что пошло не так, как надо!
В строке, load=$CPU_LOAD_TIME
мое намерение состояло в том, чтобы извлечь любой из $1
, $2
или $3
в зависимости от значения CPU_LOAD_TIME
(который был бы 1,2 (или 5) или 3 (или 15)), набор через параметры командной строки.
Это, конечно, не происходил. При тестировании первоначально, я только проверял на высокие загрузки главным образом более чем 2,00 средних числа загрузки, таким образом, я не определил это, поскольку сценарий вел себя, как предназначено (генерирующий уведомления).
Я внес два изменения, и теперь сценарий инициировал в правильных значениях (Протестированный и при увеличении и при уменьшении загрузок, только для проверки). Это - основное изменение:
case $CPU_LOAD_TIME in
15)load=$3;;
5) load=$2;;
*) load=$1;;
esac
Эта версия, которую я изменил немного, кажется, хорошо работает. Я назвал его load.bash
.
#!/bin/bash
CPU_LOAD_TIME=$1
CPU_LOAD_LMT=$2
list=$(cat /proc/loadavg)
set -- $list
load=$CPU_LOAD_TIME #Extract required cpu load
load=$(echo "scale=2; $load * 100" | bc) #Convert to integer
load=$(printf "%.0f" $load) #Remove decimal digits
highload=$((`nproc`*$CPU_LOAD_LMT)) #Calculate high load threshold
#based on number of cores
printf "LOAD: %s | HLOAD: %s\n" $load $highload
if test $load -ge $highload
then
echo "ge"
else
echo "le"
fi
$ ./load.bash 10 100
LOAD: 1000 | HLOAD: 400
ge
$ ./load.bash 1 1000
LOAD: 100 | HLOAD: 4000
le
rw-------
---------121 предложение--------128301----: можно использовать массивы удара для предотвращенияset
материал:loads=($(cat /proc/loadavg )); echo "5=${loads[0]}; 10=${loads[1]}; 15=${loads[2]}"
; можно использовать переменную для индекса:${loads[$i]}
. Отметьте количество массивов от 0, не 1. Вы могли также использоватьread
:read -a loads < /proc/loadavg; echo "5=${loads[0]}; 10=${loads[1]}; 15=${loads[2]}"
– derobert 02.10.2013, 07:51