 4bedff602c
			
		
	
	4bedff602c
	
	
	
		
			
			Run tmpreaper every six hours and remove files/directories more than 12 hours old. Change-Id: Iba105c7defd950590c6ff437035830e741b9e16a Reviewed-on: https://review.openstack.org/12372 Approved: James E. Blair <corvus@inaugust.com> Reviewed-by: James E. Blair <corvus@inaugust.com> Tested-by: Jenkins
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| PATH=/usr/sbin:/usr/bin:/sbin:/bin
 | |
| 
 | |
| # in case of `dpkg -r' leaving conffile.
 | |
| if ! [ -x /usr/sbin/tmpreaper ]; then
 | |
|     exit 0
 | |
| fi
 | |
| 
 | |
| # Remove `/tmp/...' files not accessed in X time (configured in
 | |
| # /etc/tmpreaper.conf, default 7 days), protecting the .X, .ICE, .iroha and
 | |
| # .ki2 files; but removing symlinks. For directories not the access time, but
 | |
| # the modification time is used (--mtime-dir), as reading a directory to check
 | |
| # the contents will update the access time!
 | |
| #
 | |
| # In the default, /tmp/. is used, not the plain /tmp you might expect, as this
 | |
| # accomodates the situation where /tmp is a symlink to some other place.
 | |
| #
 | |
| # Note that the sockets are safe even without the `--protect', unless `--all'
 | |
| # is given, and the `.X*-lock' files would be safe also, as long as they have
 | |
| # no write permissions, so this particular protect is mainly illustrative, and
 | |
| # redundant.  For best results, don't try to get fancy with the moustache
 | |
| # expansions.  KISS.  Always --test your protect patterns.
 | |
| #
 | |
| # Immutable files (such as ext3fs' .journal) are not (cannot be) removed;
 | |
| # when such a file is encountered when trying to remove it, no error is given
 | |
| # unless you use the --verbose option in which case a message is given.
 | |
| #
 | |
| # In case you're wondering: .iroha is for cannaserver and .ki2 is for kinput2
 | |
| # (japanese software, lock files).
 | |
| # journal.dat is for (older) ext3 filesystems
 | |
| # quota.user, quota.group is for (duh) quotas.
 | |
| 
 | |
| # Set config defaults
 | |
| SHOWWARNING=''
 | |
| 
 | |
| # get the TMPREAPER_TIME value from /etc/default/rcS
 | |
| 
 | |
| if grep '^TMPTIME=' /etc/default/rcS >/dev/null 2>&1; then
 | |
|     eval $(grep '^TMPTIME=' /etc/default/rcS)
 | |
|     if [ -n "$TMPTIME" ]; then
 | |
|         # Don't clean files if TMPTIME is negative or 'infinite'
 | |
|         # to mimic the way /lib/init/bootclean.sh works.
 | |
|         case "$TMPTIME" in
 | |
|           -*|infinite|infinity)
 | |
|                 # don't use this as default
 | |
|                 ;;
 | |
|            *)
 | |
|                 if [ "$TMPTIME" -gt 0 ]; then
 | |
|                     TMPREAPER_TIME=${TMPTIME}d
 | |
|                 else
 | |
|                     TMPREAPER_TIME=7d
 | |
|                 fi
 | |
|                 ;;
 | |
|         esac
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| # ! Important !  The "set -f" below prevents the shell from expanding
 | |
| #                file paths, which is vital for the configuration below to work.
 | |
| 
 | |
| set -f
 | |
| 
 | |
| # preserve environment setting of TMPREAPER_DELAY to allow manual override when
 | |
| # running the cron.daily script by hand:
 | |
| if [ -n "$TMPREAPER_DELAY" ]; then
 | |
|     # check for digits only
 | |
|     case "$TMPREAPER_DELAY" in
 | |
|         [0-9]*) TMPREAPER_DELAY_SAVED="$TMPREAPER_DELAY";;
 | |
|         *)      ;;
 | |
|     esac
 | |
| fi
 | |
| 
 | |
| if [ -s /etc/tmpreaper.conf ]; then
 | |
|     . /etc/tmpreaper.conf
 | |
| fi
 | |
| 
 | |
| # Now restore the saved value of TMPREAPER_DELAY (if any):
 | |
| if [ -n "$TMPREAPER_DELAY_SAVED" ]; then
 | |
|     TMPREAPER_DELAY="$TMPREAPER_DELAY_SAVED"
 | |
| else
 | |
|     # set default in case it's not given in tmpreaper.conf:
 | |
|     TMPREAPER_DELAY=${TMPREAPER_DELAY:-256}
 | |
| fi
 | |
| 
 | |
| if [ "$SHOWWARNING" = true ]; then
 | |
|     echo "Please read /usr/share/doc/tmpreaper/README.security.gz first;"
 | |
|     echo "edit /etc/tmpreaper.conf to remove this message (look for SHOWWARNING)."
 | |
|     exit 0
 | |
| fi
 | |
| 
 | |
| # Verify that these variables are set, and if not, set them to default values
 | |
| # This will work even if the required lines are not specified in the included
 | |
| # file above, but the file itself does exist.
 | |
| TMPREAPER_TIME=${TMPREAPER_TIME:-7d}
 | |
| TMPREAPER_PROTECT_EXTRA=${TMPREAPER_PROTECT_EXTRA:-''}
 | |
| TMPREAPER_DIRS=${TMPREAPER_DIRS:-'/tmp/.'}
 | |
| 
 | |
| nice -n10 tmpreaper --delay=$TMPREAPER_DELAY --mtime-dir --symlinks $TMPREAPER_TIME  \
 | |
|   $TMPREAPER_ADDITIONALOPTIONS \
 | |
|   --ctime \
 | |
|   --protect '/tmp/.X*-{lock,unix,unix/*}' \
 | |
|   --protect '/tmp/.ICE-{unix,unix/*}' \
 | |
|   --protect '/tmp/.iroha_{unix,unix/*}' \
 | |
|   --protect '/tmp/.ki2-{unix,unix/*}' \
 | |
|   --protect '/tmp/lost+found' \
 | |
|   --protect '/tmp/journal.dat' \
 | |
|   --protect '/tmp/quota.{user,group}' \
 | |
|   `for i in $TMPREAPER_PROTECT_EXTRA; do echo --protect "$i"; done` \
 | |
|   $TMPREAPER_DIRS
 |