This is the main script file. Make sure to adjust the DIRECTORY and GRAPHDIR variables for your environment.
create_graph.sh
#!/bin/bash
#directory that contains the csv files
DIRECTORY=/dashcam/resourcelog_archive
#directory that contains the gnuplot config files
GRAPHDIR=/dashcam/graphs
for f in $( ls "$DIRECTORY"/*.csv ); do
HTMLDIR=$(echo "$f" | sed 's/.csv//g')
#echo HTMLDIR is "$HTMLDIR"
mkdir -vp "$HTMLDIR"_summary
echo "$f" > "$DIRECTORY"/gnuplot_variable.txt
/usr/bin/gnuplot -e "filename='$f'" "$GRAPHDIR"/temperature.gp > "$HTMLDIR"_summary/temperature.png
/usr/bin/gnuplot -e "filename='$f'" "$GRAPHDIR"/memory.gp > "$HTMLDIR"_summary/memory.png
/usr/bin/gnuplot -e "filename='$f'" "$GRAPHDIR"/cpu.gp > "$HTMLDIR"_summary/cpu.png
#Create webpage
echo "<center>"$HTMLDIR"</center><br><br>" > "$HTMLDIR"_summary/index.html
echo "<center><img src="cpu.png"></center><br><br>" >> "$HTMLDIR"_summary/index.html
echo "<center><img src="memory.png"></center><br>" >> "$HTMLDIR"_summary/index.html
echo "<center><img src="temperature.png"></center><br>" >> "$HTMLDIR"_summary/index.html
done
#Create index webpage
echo "<center><b>Index</b></center><br><br>" > "$DIRECTORY"/index.html
for d in $( ls -d "$DIRECTORY"/*_summary | xargs -n 1 basename ); do
echo "<a href=$d>$d</a><br>" >> "$DIRECTORY"/index.html
done
All the *.gp files should be in $GRAPHDIR. All graphs are sized at 1000x400.
This template graphs 1, 5, and 15 minute CPU load over time.
cpu.gp
#!/usr/bin/gnuplot
reset
set terminal pngcairo size 1000,400
set datafile separator ","
set xdata time
set timefmt "%Y-%m-%d,%H:%M:%S"
set format x "%H:%M"
set xlabel "Time (Hour:Minute GMT)"
set ylabel "CPU"
set title "CPU"
set key below
set style data line
set grid
plot filename using 1:4 title "1 min", filename using 1:5 title "5 min", filename using 1:6 title "15 min"
This template graphs Free, Cached, and Total Memory.
memory.gp
#!/usr/bin/gnuplot
reset
set terminal pngcairo size 1000,400
set datafile separator ","
set xdata time
set timefmt "%Y-%m-%d,%H:%M:%S"
set format x "%H:%M"
set xlabel "Time (Hour:Minute GMT)"
set ylabel "Memory (KB)"
set title "Memory"
set key below
set style data line
set grid
plot filename using 1:8 title "Free", filename using 1:7 title "Total", filename using 1:9 title "Cached"
This template graphs degrees celcius over time.
temperature.gp
#!/usr/bin/gnuplot
reset
set terminal pngcairo size 1000,400
set datafile separator ","
set xdata time
set timefmt "%Y-%m-%d,%H:%M:%S"
set format x "%H:%M"
set xlabel "Time (Hour:Minute GMT)"
set ylabel "Celcius"
set title "CPU Temperature"
set key below
set style data line
set grid
plot filename using 1:3 title "Degrees Celcius"