summaryrefslogtreecommitdiffstats
path: root/usr.sbin/periodic
diff options
context:
space:
mode:
authorpst <pst@FreeBSD.org>1997-08-12 17:48:49 +0000
committerpst <pst@FreeBSD.org>1997-08-12 17:48:49 +0000
commit3c7e85f93caec6a560489e4839cc2751332f39c7 (patch)
tree0759c0d22cba5ff74068e44606af54e04cbb3a75 /usr.sbin/periodic
parent4c37b885439f00dec715439bc54a9cfd3d68dfcd (diff)
downloadFreeBSD-src-3c7e85f93caec6a560489e4839cc2751332f39c7.zip
FreeBSD-src-3c7e85f93caec6a560489e4839cc2751332f39c7.tar.gz
Initial import of periodic executable control program.
Diffstat (limited to 'usr.sbin/periodic')
-rw-r--r--usr.sbin/periodic/Makefile11
-rw-r--r--usr.sbin/periodic/periodic.8112
-rw-r--r--usr.sbin/periodic/periodic.sh51
3 files changed, 174 insertions, 0 deletions
diff --git a/usr.sbin/periodic/Makefile b/usr.sbin/periodic/Makefile
new file mode 100644
index 0000000..d629790
--- /dev/null
+++ b/usr.sbin/periodic/Makefile
@@ -0,0 +1,11 @@
+# Makefile for periodic(8)
+#
+# $Id$
+
+MAN8= periodic.8
+
+beforeinstall:
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${.CURDIR}/periodic.sh ${DESTDIR}${BINDIR}/periodic
+
+.include <bsd.prog.mk>
diff --git a/usr.sbin/periodic/periodic.8 b/usr.sbin/periodic/periodic.8
new file mode 100644
index 0000000..81b4352
--- /dev/null
+++ b/usr.sbin/periodic/periodic.8
@@ -0,0 +1,112 @@
+.\" Copyright (c) 1997 FreeBSD, Inc.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $Id$
+.\"
+.Dt periodic 8
+.Os FreeBSD 3.0
+.Sh NAME
+.Nm periodic
+.Nd run periodic system functions
+.Sh SYNOPSIS
+.Nm periodic
+.Ar path-to-directory
+.Sh DESCRIPTION
+The
+.Nm
+program is intended to be called by cron(8) to execute shell scripts
+located in the specified directory.
+.Pp
+The arguments are as follows:
+.Bl -tag -width Fl
+.It Ar path
+The
+.Ar path
+is a required argument. This is a path to a directory containing
+executable programs or shell scripts which are executed one by one
+in alphanumeric order.
+.El
+.Sh ENVIRONMENT
+The
+.Nm
+command sets the
+.Ev PATH
+environment to include all standard system
+directories. If entries are added, each entry
+must be responsible for configuring the appropriate environment.
+.Sh FILES
+.Bl -tag -width /etc/cron.d/monthly
+.It Pa /etc/crontab
+The
+.Nm
+program is typically called via entries in the system default cron table.
+.It Pa /etc/cron.d
+The default top-level directory where periodic script directories reside.
+If a simple name, rather than a complete path, is specified on the command
+line, this directory is checked for the corresponding argument.
+.It Pa /etc/cron.d/daily
+The default directory where script fragments that should be executed once
+a day (usually in the middle of the night) are placed.
+.It Pa /etc/cron.d/weekly
+The default directory where script fragments that should be executed once
+a eek (usually on a weekend night) are placed.
+.It Pa /etc/cron.d/monthly
+The default directory where script fragments that should be executed once
+a month (usually on the first day of the month) are placed.
+.It Pa <entry>
+Each file in the specified directory is checked for executability. If
+the execute bit is set, the entry is run.
+.El
+.Sh EXAMPLES
+The system crontab should have entries for
+.Nm
+similar to the following example:
+.Pp
+.Dl # do daily/weekly/monthly maintenance
+.Dl 0 2 * * * root periodic daily 2>&1
+.Dl 0 3 * * 6 root periodic weekly 2>&1
+.Dl 0 5 1 * * root periodic monthly 2>&1
+.Sh SEE ALSO
+.Xr cron 8
+.Xr crontab 5 ,
+.Xr sh 1 ,
+.Rs
+.Sh DIAGNOSTICS
+Exit status is 0 on success, and 1 if the command
+fails for one of the following reasons:
+.Bl -diag
+.It usage: periodic <directory of files to execute>
+No directory path argument was passed to
+.Nm
+to specify where the script fragments reside.
+.It <directory> not found
+Self explanatory.
+.El
+.Sh HISTORY
+The
+.Nm
+program first appeared in
+.Fx 3.0 .
+.Sh AUTHOR
+.An Paul Traina Aq pst@FreeBSD.ORG .
diff --git a/usr.sbin/periodic/periodic.sh b/usr.sbin/periodic/periodic.sh
new file mode 100644
index 0000000..fb618db
--- /dev/null
+++ b/usr.sbin/periodic/periodic.sh
@@ -0,0 +1,51 @@
+#!/bin/sh -
+#
+# $Id$
+#
+# Run nightly periodic scripts
+#
+# usage: periodic { daily | weekly | monthly } - run standard periodic scripts
+# periodic /absolute/path/to/directory - run periodic scripts in dir
+#
+
+if [ $# -lt 1 ] ; then
+ echo "usage: $0 <directory of files to execute>" 1>&2
+ exit 1
+fi
+
+dir=$1
+run=`basename $dir`
+
+# If a full path was not specified, assume default cron area
+
+if [ "$dir" = "$run" ] ; then
+ dir="/etc/cron.d/$dir"
+fi
+
+if [ ! -d $dir ] ; then
+ ( echo "$0: $dir not found"
+ echo ""
+ echo "usage: $0 <directory of files to execute>"
+ ) 1>&2
+ exit 1
+fi
+
+# Check and see if there is work to be done, if not, exit silently
+# this is not an error condition.
+
+if [ "`basename $dir/*`" = "*" ] ; then
+ exit 0
+fi
+
+host=`hostname -s`
+echo "Subject: $host $run run output"
+
+# Execute each executable file in the directory. If the x bit is not
+# set, assume the user didn't really want us to muck with it (it's a
+# README file or has been disabled).
+
+for file in $dir/* ; do
+ if [ -x $file ] ; then
+ $file
+ fi
+done
OpenPOWER on IntegriCloud