#!/bin/sh # # $NetBSD: cleartmp,v 1.13 2018/09/30 10:38:05 martin Exp $ # # PROVIDE: cleartmp # REQUIRE: mountall # BEFORE: DAEMON $_rc_subr_loaded . /etc/rc.subr name="cleartmp" rcvar="clear_tmp" start_cmd="cleartmp_start" stop_cmd=":" cleartmp_start() { echo "Clearing temporary files." if checkyesno per_user_tmp && [ -d ${per_user_tmp_dir} ]; then tmp_dir=${per_user_tmp_dir} else tmp_dir="/tmp" # Check if /tmp was created by the perusertmp rc.d # script and recreate it if necessary. if [ "$(/usr/bin/readlink /tmp)" = ${per_user_tmp_dir}/@ruid ]; then /bin/rm -rf ${tmp_dir} /bin/mkdir ${tmp_dir} /sbin/chown root:wheel ${tmp_dir} /bin/chmod 1777 ${tmp_dir} fi fi # # Delete almost everything, except lost+found, quota.user, # and quota.group in the top level. (This is not needed # with mfs or tmpfs /tmp, but doesn't hurt anything). # # The find command, with "-exec ... +" instead of "-exec # ... \;", will pass many file or dir names to each # invocation of "rm -rf". We avoid using any glob # patterns because of the risk of "Arg list too long" # errors when there are very many files. # (cd ${tmp_dir} && find -x . ! -name . ! -name lost+found ! -name quota.user \ ! -name quota.group -exec rm -rf -- {} \+ -type d -prune) # if requested, create symlink for /var/shm if [ -n "${var_shm_symlink}" ]; then /bin/rm -rf /var/shm /bin/mkdir -m 1777 "${var_shm_symlink}" /bin/ln -s "${var_shm_symlink}" /var/shm fi } load_rc_config $name run_rc_command "$1"