The Fcron package contains a periodical command scheduler which aims at replacing Vixie Cron.
This package is known to build and work properly using an LFS 11.3 platform.
Download (HTTP): http://fcron.free.fr/archives/fcron-3.2.1.src.tar.gz
Download MD5 sum: bd4996e941a40327d11efc5e3fd1f839
Download size: 587 KB
Estimated disk space required: 5.1 MB
Estimated build time: 0.1 SBU
An MTA, text editor (default is vi from the Vim-9.0.1273 package), Linux-PAM-1.5.2, and DocBook-utils-0.6.14
User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/fcron
Fcron
uses the cron facility of syslog to log all messages.
Since LFS does not set up this facility in
/etc/syslog.conf
, it needs to be done prior to
installing Fcron. This command will append the
necessary line to the current /etc/syslog.conf
(perform as the root
user):
cat >> /etc/syslog.conf << "EOF"
# Begin fcron addition to /etc/syslog.conf
cron.* -/var/log/cron.log
# End fcron addition
EOF
The configuration file has been modified, so reloading the
sysklogd daemon will activate the changes (again as
the root
user).
/etc/rc.d/init.d/sysklogd reload
For security reasons, an unprivileged user and group for
Fcron should be created (perform as the
root
user):
groupadd -g 22 fcron && useradd -d /dev/null -c "Fcron User" -g fcron -s /bin/false -u 22 fcron
Now fix some locations hard coded in the documentation:
find doc -type f -exec sed -i 's:/usr/local::g' {} \;
Install Fcron by running the following commands:
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --without-sendmail \ --with-boot-install=no \ --with-systemdsystemunitdir=no && make
This package does not come with a test suite.
Now, as the root
user:
make install
DESTDIR install must be done as root
user. Furthermore, if PAM
configuration files should be installed in
/etc/pam.d
, you have to create this directory in the
DESTDIR before doing the install.
--without-sendmail
: By default,
Fcron will attempt to use the
sendmail command from an MTA
package to email you the results of the fcron script.
This switch is used to disable default email notification. Omit the
switch to enable the default. Alternatively, you can use the
--with-sendmail=
to use a different mailer command.
</path/to/MTA
command>
--with-boot-install=no
: This prevents
installation of the bootscript included with the package.
--with-systemdsystemunitdir=no
:
This prevents building the systemd units,
which are not needed for a SYS V system.
--with-editor=
:
This switch allows you to set the default text editor.
</path/to/editor>
--with-dsssl-dir=
:
May be used if you have DocBook-utils-0.6.14 installed.
Currently, the dsssl stylesheets are located at
</path/to/dsssl-stylesheets>
/usr/share/sgml/docbook/dsssl-stylesheets-1.79
.
There are no required changes in any of the config files.
Configuration information can be found in the man page for
fcron.conf
.
fcron scripts are written using fcrontab. Refer to the fcrontab man page for proper parameters to address your situation.
If Linux-PAM is installed, two PAM
configuration files are installed in
etc/pam.d
. Alternatively if
etc/pam.d
is not used, the installation will append two
configuration sections to the existing /etc/pam.conf
file. You should ensure the files match your preferences.
Modify them as required to suit your needs.
If you would like to set up a periodic hierarchy for the root user,
first issue the following commands (as the
root
user) to create the
/usr/bin/run-parts
script:
cat > /usr/bin/run-parts << "EOF" &&
#!/bin/sh
# run-parts: Runs all the scripts found in a directory.
# from Slackware, by Patrick J. Volkerding with ideas borrowed
# from the Red Hat and Debian versions of this utility.
# keep going when something fails
set +e
if [ $# -lt 1 ]; then
echo "Usage: run-parts <directory>"
exit 1
fi
if [ ! -d $1 ]; then
echo "Not a directory: $1"
echo "Usage: run-parts <directory>"
exit 1
fi
# There are several types of files that we would like to
# ignore automatically, as they are likely to be backups
# of other scripts:
IGNORE_SUFFIXES="~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp"
# Main loop:
for SCRIPT in $1/* ; do
# If this is not a regular file, skip it:
if [ ! -f $SCRIPT ]; then
continue
fi
# Determine if this file should be skipped by suffix:
SKIP=false
for SUFFIX in $IGNORE_SUFFIXES ; do
if [ ! "$(basename $SCRIPT $SUFFIX)" = "$(basename $SCRIPT)" ]; then
SKIP=true
break
fi
done
if [ "$SKIP" = "true" ]; then
continue
fi
# If we've made it this far, then run the script if it's executable:
if [ -x $SCRIPT ]; then
$SCRIPT || echo "$SCRIPT failed."
fi
done
exit 0
EOF
chmod -v 755 /usr/bin/run-parts
Next, create the directory layout for the periodic jobs (again as the
root
user):
install -vdm754 /etc/cron.{hourly,daily,weekly,monthly}
Finally, add the run-parts to the system fcrontab
(while still the root
user):
cat > /var/spool/fcron/systab.orig << "EOF"
&bootrun 01 * * * * root run-parts /etc/cron.hourly
&bootrun 02 4 * * * root run-parts /etc/cron.daily
&bootrun 22 4 * * 0 root run-parts /etc/cron.weekly
&bootrun 42 4 1 * * root run-parts /etc/cron.monthly
EOF
Install the
/etc/rc.d/init.d/fcron
init script from the
blfs-bootscripts-20230101 package.
make install-fcron
Finally, again as the root
user, start fcron and generate the
/var/spool/fcron/systab
file:
/etc/rc.d/init.d/fcron start && fcrontab -z -u systab