periodic と run-parts

Linux と FreeBSD の cron の動作の違いとして気になるところに、FreeBSD では

/etc/cron.d/*

を読まないというのがある1が、periodic を使って month, weekly, daily なんかと同じように読み込ませることはできそう。つかまぁもっとこれらの periodic なディレクトリを活用すればいいんですけど、タイミングを自由に記述しつつ crontab ファイルの肥大化を防ぎたいわけですよ。

ついでに Linux の run-parts も調べてみたのでちょいとまとめてみる。

periodic

基本的な使い方

periodic DIRECTORY
  • 指定ディレクトリ内の実行ビットの立っているファイルについて順次実行を試みる
  • FreeBSD/MacOSX の /etc/periodic 内の monthly, weekly, daily はここから実行される
  • cron 関係のディレクトリでない場合は基本的にフルパスを指定する
  • run-parts と違い、実行した日時を出力する
  • 細々した設定を
periodic.conf

に書ける。細かい設定をしたい場合はディレクトリに名前を付けて置いて、その名前に応じて設定を記述していくとよい感じ。

これをうまく使えば Linux と同じように

/etc/cron.d/

内のファイルを読み取って実行させることもできなくはない。

ただし、Linux の /etc/cron.d/ 内に置くファイルは crontab そのものであり、実行ビットが必要ないが、periodic を使う場合は実行するファイルを置くので実行ビットが必要、という点が大きく違う。

run-parts

基本的な使い方

run-parts DIRECTORY
  • 指定ディレクトリ内で実行ビットの立っているファイルについて順次実行を試みる
  • Linux の monthly, weekly, daily, hourly はこの run-parts を利用して実現している

run-parts の解釈するファイル名には制限があるので注意が必要。まぁ man 嫁。

If the –lsbsysinit option is not given then the names must consist entirely of upper and lower case letters, digits, underscores, and hyphens.

/etc/cron.d/

Linux の cron はこの中のファイルについても crontab と同様にチェックを行う。この中のファイルは実際に実行するものではなく crontab フォーマットのファイルなので、当然実行ビットは必要ない

  1. ずっと気になってるんです、ワタシ 

More