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