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 :-)

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert