-
Notifications
You must be signed in to change notification settings - Fork 0
/
discovery_treshold.sh
49 lines (35 loc) · 1.42 KB
/
discovery_treshold.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#! /usr/bin/env bash
# ###################################################
# skript přijímá dva parametry a to název disku a
# typ disku podle `smartctl -d test /dev/testovany_disk`
# Pokud není druhý argument zadán je použit typ `sat`
# příklad spuštění:
#
# sudo disk_treshold.sh sdb sat
#
# ###################################################
# $$ - vlastní pid
# načtení názvu disku z argumentu skriptu
ktery_disk=$1
# načtení type disku. Když je argument prázdný
# nastaví se type na `sat`
type_disku=${2-'sat'}
# kolikrát má proběhnout testovací vzorek
# čím vyšší číslo, tím přesnější
pocet_cyklu=100
cyklu=$pocet_cyklu
# načtem kolik proběhlo operací read před našim testem
poc_sektoru=$( awk {'print $1'} /sys/block/$ktery_disk/stat 2> /dev/null ) || exit 1
# smyčka o zadaném počtu cyklů
while [ "$pocet_cyklu" -gt 0 ]; do
# načtem a zobrazíme teplotu z disku
awk '/json.temperature.current/{sub(";", "°C", $NF); print $NF}' <<< `smartctl -l scttempsts --json=g -d $type_disku /dev/$ktery_disk`
# dekrementace cyklu
pocet_cyklu=$(( $pocet_cyklu - 1 ))
done
# kolik readů po testu
kon_sektoru=$( awk {'print $1'} /sys/block/$ktery_disk/stat 2> /dev/null ) || exit 1
# rozdíl v počtu readů
rozdil=$(( $kon_sektoru - $poc_sektoru ))
echo "start sektoru: $poc_sektoru | end sektoru: $kon_sektoru | rozdíl: $rozdil"
echo "Jeden read (treshold) = $(( $rozdil / $cyklu ))"