D.12. /etc/rc.d/init.d/cleanfs

#!/bin/sh
########################################################################
# Begin cleanfs
#
# Description : Clean file system
#
# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
#
# Version     : LFS 7.0
#
########################################################################

### BEGIN INIT INFO
# Provides:            cleanfs
# Required-Start:      $local_fs
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:       S
# Default-Stop:
# Short-Description:   Cleans temporary directories early in the boot process.
# Description:         Cleans temporary directories /var/run, /var/lock, and
#                      optionally) /tmp.  cleanfs also creates /var/run/utmp 
#                      and any files defined in /etc/sysconfig/createfiles.
# X-LFS-Provided-By:   LFS
### END INIT INFO

. /lib/boot/functions

# Function to create files/directory on boot.
create_files() {
   # Read in the configuration file.
   exec 9>&0 < /etc/sysconfig/createfiles
      while read name type perm usr grp dtype maj min junk
      do
         # Ignore comments and blank lines.
               case "${name}" in
            ""|\#*) continue ;;
         esac

         # Ignore existing files.
         if [ ! -e "${name}" ]; then
            # Create stuff based on its type.
            case "${type}" in
               dir)
                  mkdir "${name}"
                  ;;
               file)
                  :> "${name}"
                  ;;
               dev)
                  case "${dtype}" in
                     char)
                        mknod "${name}" c ${maj} ${min}
                        ;;
                     block)
                        mknod "${name}" b ${maj} ${min}
                        ;;
                     pipe)
                        mknod "${name}" p
                        ;;
                     *) 
                        boot_mesg -n "\nUnknown device type: ${dtype}" ${WARNING}
                        boot_mesg "" ${NORMAL}
                        ;;
                  esac
                  ;;
               *)
                  boot_mesg -n "\nUnknown type: ${type}" ${WARNING}
                  boot_mesg "" ${NORMAL}
                  continue
                  ;;
            esac

            # Set up the permissions, too.
            chown ${usr}:${grp} "${name}"
            chmod ${perm} "${name}"
         fi
      done
   exec 0>&9 9>&-
}

case "${1}" in
   start)
      boot_mesg -n "Cleaning file systems:" ${INFO}

      if [ "${SKIPTMPCLEAN}" = "" ]; then
         boot_mesg -n " /tmp" ${NORMAL}
         cd /tmp &&
         find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1
      fi

      > /var/run/utmp

      if grep -q '^utmp:' /etc/group ; then
         chmod 664 /var/run/utmp
         chgrp utmp /var/run/utmp
      fi

      (exit ${failed})
      evaluate_retval

      if egrep -qv '^(#|$)' /etc/sysconfig/createfiles 2>/dev/null; then
         boot_mesg "Creating files and directories..."
         create_files
         evaluate_retval
      fi
      ;;
   *)
      echo "Usage: ${0} {start}"
      exit 1
      ;;
esac

# End cleanfs