conf/129697: [patch] fix misbehavior of
periodic/daily/100.clean-disks vs. port lang/sbcl
chukharev at mail.ru
chukharev at mail.ru
Sun Nov 22 19:20:04 UTC 2009
The following reply was made to PR conf/129697; it has been noted by GNATS.
From: chukharev at mail.ru
To: bug-followup at freebsd.org
Cc:
Subject: Re: conf/129697: [patch] fix misbehavior of
periodic/daily/100.clean-disks vs. port lang/sbcl
Date: Sun, 22 Nov 2009 21:18:47 +0200
The old patch worked for me for at least six months with no problems. Then I made
something in Windows (the machine is dual boot notebook), and found the following.
The windows filesystem is automatically mounted by gnome, it is not marked as read-only
but write operations on it are not allowed. So it is scanned by 100.clean-disks
resulting in messages in mails like
rm: #SharedObjects: Operation not supported
A new version of the patch includes one more variable, daily_clean_disks_prune,
containing a list of directories to ignore with all their subdirectories.
Additionally, the new variables get empty strings as default values and comments
document meaning of the variables in /etc/defaults/periodic.conf.
NB. The script is off by default, thus the patch is not changing the default behavior.
Perhaps, "/media" (or even "/media /mnt") is a better default for daily_clean_disks_prune.
The file has mixed tabs and spaces, this might be nice to fix in a separate cosmetic
patch.
===
--- etc/defaults/periodic.conf.orig 2009-06-25 16:49:49.000000000 +0300
+++ etc/defaults/periodic.conf 2009-11-17 12:28:35.000000000 +0200
@@ -40,6 +40,8 @@
daily_clean_disks_files="[#,]* .#* a.out *.core *.CKP .emacs_[0-9]*"
daily_clean_disks_days=3 # If older than this
daily_clean_disks_verbose="YES" # Mention files deleted
+daily_clean_disks_prune="" # Directories to ignore
+daily_clean_disks_ignore="" # Files to ignore
# 110.clean-tmps
daily_clean_tmps_enable="NO" # Delete stuff daily
--- etc/periodic/daily/100.clean-disks.orig 2009-10-24 18:20:24.000000000 +0300
+++ etc/periodic/daily/100.clean-disks 2009-11-17 16:15:06.000000000 +0200
@@ -29,10 +29,18 @@
echo ""
echo "Cleaning disks:"
set -f noglob
- args="-name "`echo "$daily_clean_disks_files" |
+ args="( -name "`echo "$daily_clean_disks_files" |
sed -e 's/^[ ]*//' \
-e 's/[ ]*$//' \
- -e 's/[ ][ ]*/ -o -name /g'`
+ -e 's/[ ][ ]*/ -o -name /g'`" )"
+
+ if ! [ -z "$daily_clean_disks_ignore" ]
+ then
+ args="$args -a ! ( -path "`echo "$daily_clean_disks_ignore" |
+ sed -e 's/^[ ]*//' \
+ -e 's/[ ]*$//' \
+ -e 's/[ ][ ]*/ -o -path /g'`" )"
+ fi
case "$daily_clean_disks_verbose" in
[Yy][Ee][Ss])
@@ -41,9 +49,19 @@
print=;;
esac
- rc=$(find / \( ! -fstype local -o -fstype rdonly \) -prune -o \
- \( $args \) -atime +$daily_clean_disks_days \
- -execdir rm -df {} \; $print | tee /dev/stderr | wc -l)
+ if ! [ -z "$daily_clean_disks_prune" ]
+ then
+ prune="-o -path "`echo "$daily_clean_disks_prune" |
+ sed -e 's/^[ ]*//' \
+ -e 's/[ ]*$//' \
+ -e 's/[ ][ ]*/ -o -path /g'`
+ else
+ prune=""
+ fi
+
+ command="find / ( ! -fstype local -o -fstype rdonly $prune ) -prune -o ( \
+ ( $args ) -atime +$daily_clean_disks_days -execdir rm -df {} ; $print )"
+ rc=$($command | tee /dev/stderr | wc -l)
[ -z "$print" ] && rc=0
[ $rc -gt 1 ] && rc=1
set -f glob
===
--
Vladimir Chukharev
Tampere University of Technology
More information about the freebsd-bugs
mailing list