Fcron-3.2.1

Fcron の概要

Fcron パッケージは定期実行のコマンドスケジューラーです。 Vixie Cron の代替を目的として提供されます。

[注記]

注記

LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。

パッケージ情報

Fcron の依存パッケージ

任意

MTA, テキストエディター (デフォルトは Vim-9.0.2103 パッケージの vi), Linux-PAM-1.5.3, DocBook-utils-0.6.14

Fcron のインストール

Fcronsyslog の cron 機能を利用して各種メッセージをログ出力します。 LFS ではその設定を /etc/syslog.conf にて行っていないため、Fcron のインストール前に行う必要があります。 以下のコマンドにより /etc/syslog.conf に必要となる設定行を追記します。 (root ユーザーになって実行します。)

cat >> /etc/syslog.conf << "EOF"
# Begin fcron addition to /etc/syslog.conf

cron.* -/var/log/cron.log

# End fcron addition
EOF

設定ファイルを更新したので sysklogd デーモンをリロードし、その変更を適用します。 (これも root ユーザーで実行します。)

/etc/rc.d/init.d/sysklogd reload

セキュリティ観点から Fcron は一般ユーザーおよびグループにより実行されるようにします。 (root ユーザーになって実行します。)

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' {} \;

以下のコマンドを実行して Fcron をビルドします。

./configure --prefix=/usr          \
            --sysconfdir=/etc      \
            --localstatedir=/var   \
            --without-sendmail     \
            --with-boot-install=no \
            --with-systemdsystemunitdir=no &&
make

このパッケージにテストスイートはありません。

root ユーザーになって以下を実行します。

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: Fcron はデフォルトの動作として、MTA パッケージが提供する sendmail コマンドを実行して、fcron スクリプトの処理結果をメール送信します。 本スイッチはそのメール通知を無効にします。 デフォルト動作に従う場合は本スイッチを取り除いてください。 あるいは --with-sendmail=<MTA コマンドへのパス> の指定により、所望のメーラーコマンドを指定することもできます。

--with-boot-install=no: 本パッケージに含まれるブートスクリプトをインストールしないようにします。

--with-systemdsystemunitdir=no: This prevents building the systemd units, which are not needed for a SYS V system.

--with-editor=<エディターコマンドへのパス>: このスイッチはデフォルトのテキストエディターを指定します。

--with-dsssl-dir=</path/to/dsssl-stylesheets>: May be used if you have DocBook-utils-0.6.14 installed. Currently, the dsssl stylesheets are located at /usr/share/sgml/docbook/dsssl-stylesheets-1.79.

Fcron の設定

設定ファイル

/etc/fcron.conf, /etc/fcron.allow, /etc/fcron.deny

設定情報

設定ファイルに対して変更を要するものはありません。 設定ファイルに関する情報は fcron.conf に対する man ページを参照してください。

fcron スクリプトは fcrontab を利用しています。 必要な状況を実現するための適切なパラメーターに関しては fcrontab の man ページを参照してください。

Linux-PAM をインストールしている場合、etc/pam.d ディレクトリに 2 つの PAM 設定ファイルがインストールされます。 etc/pam.d ディレクトリを利用していない場合は、/etc/pam.conf ファイルに 2 つの設定内容を追記します。 この 2 つの設定内容が正しいものかを確認してください。 そして必要なら環境に合致するものに修正してください。

Periodic Jobs

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

ブートスクリプト

blfs-bootscripts-20231119 パッケージが提供する初期化スクリプト /etc/rc.d/init.d/fcron をインストールします。

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

パッケージ構成

インストールプログラム: fcron, fcrondyn, fcronsighup, fcrontab
インストールライブラリ: なし
インストールディレクトリ: /usr/share/doc/fcron-3.2.1, /var/spool/fcron

概略説明

fcron

スケジューリングデーモン。

fcrondyn

実行中の fcron デーモンへの指示を行うユーザーツール。

fcronsighup

fcron に対して Fcron テーブルを再読込みすることを指示します。

fcrontab

fcron が利用するテーブルをインストール、編集、一覧、削除するためのプログラム。