PERIODIC(8)

名称
periodic - 定期的なシステム機能を実行する

書式
periodic directory ...

解説
periodic プログラムは指定されたディレクトリにあるシェルスクリプトを実行するために、 cron(8) に呼び出されることを意図しています。

以下の引数から一つ以上を指定しなければいけません :

daily
    標準的な 1 日周期の実行ファイルを実行します。 これはよく (その地域の時刻で) 朝早くに行なわれます。

weekly
    標準的な 1 週間周期の実行ファイルを実行します。 これはよく日曜日の朝に行なわれます。

monthly
    標準的な 1 ヶ月周期の実行ファイルを実行します。 これはよく月の 1 日目に行なわれます。

security
    標準的な 1 日周期でのセキュリティチェックを実行します。 通常、 daily の実行から起動されます。

path
    実行すべき一連の実行ファイルがある任意のディレクトリを指定します。

引数が絶対パスのディレクトリ名の場合はそれがそのまま使われます。 それ以外の場合は /etc/periodic の下と periodic.conf(5) (以下を参照) の中の local_periodic で指定されたディレクトリが検索されます。

periodic プログラムは指定されたディレクトリ (複数指定可) にある 各実行可能ファイルを実行します。もし実行可能ビットが セットされていないファイルがあっても、無視するだけで それに関するメッセージも表示しません。

各スクリプトは以下のいずれかの値とともに終了することが要求されます。

0   スクリプトの出力に注目すべき点はありません。 変数 <basedir>_show_success で出力のマスクを制御します。

1   スクリプトから注意すべき情報が出力されています。 変数 <basedir>_show_info でこの出力をマスクするかどうかを制御します。

2   スクリプトは無効な設定による警告を発しました。 変数 <basedir>_show_badconfig でこの出力をマスクするかどうかを制御します。

>2  スクリプトからマスクされない出力が出されています。

もし、 periodic.conf 中の関連のある変数 ( <basedir> はスクリプトが置かれた基準となるディレクトリ) が “NO” に設定されているなら、 スクリプトの出力はマスクされます。 その変数が “YES” か “NO” のどちらにも設定されていなければ、 periodic.conf(5) に記述されたデフォルトの値が採用されます。

残った出力は <basedir>_output に設定された値に基づいて送られます。

もし、これにパス名 ( ‘/’ で始まります) が設定されているなら、出力は単純にそのファイルに記録されます。 newsyslog(8) は /var/log/daily.log, /var/log/weekly.log, /var/log/monthly.log というファイルを知っており、 これらのファイルが存在するなら、 適当な回数でローテートされます。 したがって、 periodic の出力を記録しようとするなら、 これらを設定するのが適切です。

<basedir>_output の値が ‘/’ で始まっておらず、空でもない場合には、 メールのアドレスのリストが含まれているとみなされ、 出力はメールで送られます。

<basedir>_output が設定されていないか、空である場合には 出力は標準出力に送られます。

環境変数
periodic コマンドは環境変数 PATH をすべての標準的なシステムディレクトリを含むように設定します。 ただし、 /usr/local/bin のような追加的なディレクトリは含めません。もし他のパスに 依存するような実行ファイルを加えるなら、それぞれの実行ファイルが 自己の環境変数を適切に設定する責任を負う必要があります。

関連ファイル

/etc/crontab
    典型的な periodic プログラムの呼び出しはシステムのデフォルト cron(8) テーブル内の エントリから行なわれます。

/etc/periodic
    サブディレクトリとして daily, weekly, monthly を含む上層のディレクトリです。これらのサブディレクトリには システムの標準的な定期的実行ファイルが置かれます。

/etc/defaults/periodic.conf
    periodic.conf システムレジストリは periodic と標準の daily, weekly, monthly スクリプト の振舞を制御する変数を保持します。

/etc/periodic.conf
    このファイルはデフォルトの periodic の設定の 一部を置き換えるものです。

使用例
システム crontab には下の例のような periodic のエントリが記述されているはずです :

    # do daily/weekly/monthly maintenance
    0      2       *       *       *       root    periodic daily
    0      3       *       *       6       root    periodic weekly
    0      5       1       *       *       root    periodic monthly

典型的なシステムレジストリ /etc/defaults/periodic.conf には変数 local_periodic について次のように記述してあるでしょう :

    local_periodic="/usr/local/etc/periodic /usr/X11R6/etc/periodic"

periodic の出力をメールで受け取る代わりにログにとるには 以下のような行を /etc/periodic.conf に追加します :

    daily_output=/var/log/daily.log
    weekly_output=/var/log/weekly.log
    monthly_output=/var/log/monthly.log

毎日実行される periodic のジョブから 重要な情報のみを見るためには、 以下の行を /etc/periodic.conf に追加します :

    daily_show_success=NO
    daily_show_info=NO
    daily_show_badconfig=NO

関連項目
sh(1), crontab(5), periodic.conf(5), cron(8), newsyslog(8)

診断
終了状態は成功時には 0 です。もし以下のいずれかの理由で コマンドが失敗すれば、終了状態は 1 になります :

usage: periodic <directory of files to execute> スクリプトフラグメントがどこにあるかを指定する ディレクトリパス引数が periodic に渡されませんでした。

<directory> not found 説明するまでもありません。(訳注: 指定したディレクトリが見つかりません。)

歴史
periodic プログラムは FreeBSD 3.0 に初めて登場しました。

バグ
ディレクトリの情報を、文字列を含むシェル変数 <basedir> で指定するので、 <basedir> は sh(1) において有効な名前である必要があります。 すなわち、アルファベット、数値、アンダスコアであることが必要であり、 最初の文字は数値であってはなりません。

作者
Paul Traina <pst@FreeBSD.org> Brian Somers <brian@Awfulhak.org>