#!/bin/bash # cleanfs # Clean file system # Source functions library source /etc/rc.d/init.d/functions log_script_name "$0 $*" clean_files() { failed=0 cd /var/lock && find . -type f ! -newer /proc -exec rm -f {} \; || failed=1 cd /var/run && find . ! -type d ! -name utmp ! -newer /proc -exec rm -f {} \; || failed=1 if [ -d /srv/named ]; then cd /srv/named/var/run && find . ! -type d ! -name utmp ! -newer /proc -exec rm -f {} \; || failed=1 fi > /var/run/utmp if grep -q '^utmp:' /etc/group ; then chmod 664 /var/run/utmp chgrp utmp /var/run/utmp fi return ${failed} } # Function to create files/directory on boot. create_files() { failed=0 # 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 ;; *) echo "Unknown device type: ${dtype}" failed=${EXIT_CODE_WARNING} ;; esac ;; *) echo "Unknown type: ${type}" failed=${EXIT_CODE_WARNING} continue ;; esac # Set up the permissions, too. chown ${usr}:${grp} "${name}" chmod ${perm} "${name}" fi done exec 0>&9 9>&- return ${failed} } case "${1}" in start) cmd_run_log_box "Cleaning file systems" clean_files if [ -e /etc/sysconfig/createfiles ]; then if egrep -qv '^(#|$)' /etc/sysconfig/createfiles 2>/dev/null; then cmd_run_log_box_warn "Creating files and directories" create_files fi fi ;; *) echo "Usage: $0 {start}" exit ${EXIT_CODE_FAILURE} ;; esac exit $?