aboutsummaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorKris Kennaway <kris@FreeBSD.org>2004-03-08 01:56:16 +0000
committerKris Kennaway <kris@FreeBSD.org>2004-03-08 01:56:16 +0000
commitf2138752d24a8383445cc9298eb0ccb863b53fe3 (patch)
tree9f0867bc450e147b9a1b567309506221d9ec1bf3 /Tools
parent9ee56fac4b945aab7f52ec2e714dd1531be87b24 (diff)
To be run on the client, this script looks for chroot directories that have not been
used in 20 minutes, as well as directories listed as 'in use' that have not been touched in 24 hours (corresponding to port builds that have timed out or shut down uncleanly) and prunes them to reclaim space. This is intended to be run as a cron job.
Notes
Notes: svn path=/head/; revision=103258
Diffstat (limited to 'Tools')
-rwxr-xr-xTools/portbuild/scripts/cleanup-chroots48
1 files changed, 48 insertions, 0 deletions
diff --git a/Tools/portbuild/scripts/cleanup-chroots b/Tools/portbuild/scripts/cleanup-chroots
new file mode 100755
index 000000000000..4caae9c91216
--- /dev/null
+++ b/Tools/portbuild/scripts/cleanup-chroots
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# To be run on the client, this script looks for chroot directories that have not been
+# used in 20 minutes, as well as directories listed as 'in use' that have not been touched
+# in 24 hours (corresponding to port builds that have timed out or shut down uncleanly)
+# and prunes them to reclaim space.
+
+pb=/var/portbuild
+arch=$(cat /etc/arch)
+
+. ${pb}/${arch}/portbuild.conf
+
+old=$(find ${scratchdir}/*/chroot/* -prune -mmin +20 2> /dev/null)
+
+if [ -z "${old}" ]; then
+ exit 0
+fi
+
+# Prune out chroots with active builds
+for i in ${old}; do
+ if [ ! -d ${i}/used ]; then
+ old2="${i} ${old2}"
+ # Also remove "in use" chroots that were set up more than 24 hours ago
+ elif [ ! -z "`find $i/used -prune -mmin +1440`" ]; then
+ echo "cleanup-chroots: Found old files on `hostname`:"
+ ls -l ${i}/tmp ${i}/used
+ echo "${i} allegedly in use but >24 hours old"
+ old2="${i} ${old2}"
+ fi
+done
+
+if [ -z "${old2}" ]; then
+ exit 0
+fi
+
+# cleanup old NFS and devfs mounts
+for i in ${old2}; do
+ mounts=$(mount | grep $i | awk '{print $3}')
+ if [ ! -z "${mounts}" ]; then
+ umount -f ${mounts}
+ fi
+done
+
+mkdir -p ${scratchdir}/old
+mv ${old2} ${scratchdir}/old
+rm -rf ${scratchdir}/old 2> /dev/null
+chflags -R noschg ${scratchdir}/old
+rm -rf ${scratchdir}/old