microSD-schonender Betrieb von PIs (Teil 2 – /var/log-Ordner in TMPFS)
Im vorhergehende Artikel habe ich mein Basis-Setup beschrieben. Eine Sache habe ich dabei jedoch unterschlagen: Wie geht man mit den Ordnern in /var/log um, wenn doch TMPFS bei jedem Boot immer wieder neu „entsteht“? Einige Programme sind hier wenig verständnisvoll, wenn ein Pfad fehlt…
Hierzu habe ich ein init-script angelegt, in dem ich all die Verzeichnisse anlege, die meine Dienste benötigen:
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: prepare-tmpfs-dirs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create needed directories on /var/log/ for tmpfs at startup
# Description: Create needed directories on /var/log/ for tmpfs at startup
### END INIT INFO
# needed Dirs
DIR[0]=/var/log/apt
DIR[1]=/var/log/fsck
DIR[2]=/var/log/ntpstats
PRM[2]="ntp.ntp"
case "${1:-}" in
start)
mount -a
typeset -i i=0 max=$(echo "${!DIR[*]}" | tr " " "\n" | sort -nr | head -n1)
while (( i <= max ));do
if [ -n "${DIR[$i]}" ];then
# make directory
mkdir -p ${DIR[$i]}
# set mode
if [ -n "${CHM[$i]}" ];then
chmod ${CHM[$i]} ${DIR[$i]}
else
chmod 755 ${DIR[$i]}
fi
# set rights
if [ -n "${PRM[$i]}" ];then
chown -R ${PRM[$i]} ${DIR[$i]}
fi
fi
i=i+1
done
;;
stop)
;;
restart)
;;
reload|force-reload)
;;
status)
;;
*)
echo "Usage: $SELF start"
exit 1
;;
esac
Das ganze wird dann noch in den Startprozess eingegangen…
systemctl enable prepare-tmpfs-dirs
…und schon entstehen beim Boot die Verzeichnisse unterhalb von /var/log :-)