board/common: swatch: Incrementally watch statistics loggers

E.g., ethtool -S
This commit is contained in:
Tobias Waldekranz
2026-06-02 21:19:44 +00:00
parent 9a2f143d31
commit 27f4a130c6
+49
View File
@@ -0,0 +1,49 @@
#!/bin/sh
case $1 in
base|baseline) mode="baseline" ;;
incr|incremental) mode="incremental" ;;
ival|interval) mode="interval" ;;
single) mode="single" ;;
*) exit 1 ;;
esac
shift
slug=$(echo $* | tr ' ' '_' | tr -cd '[a-zA-Z0-9]-_')
baseline=/tmp/swatch-"$slug"
now=/tmp/swatch-"$slug".now
output()
{
diff -u -U0 "$baseline" "$now" | awk '
/^\-[^-]/ {
sub(/^-/, "");
last[$1] = $2;
}
/^\+[^+]/ {
sub(/^\+/, "");
diff = $2 - last[$1];
if (diff)
printf("%-60s %10d\n", $1, diff);
}
'
}
if [ $mode = baseline ] || ! [ -f "$baseline" ]; then
$@ >"$baseline"
[ $mode = baseline ] && exit
fi
if [ $mode = single ]; then
$@ >"$now"
output
exit
fi
while sleep 1; do
$@ >"$now"
printf '\e[2J\e[H'
output
[ $mode = interval ] && mv "$now" "$baseline"
done