スタッフブログ

  • 最新配信
  • RSS

CRON覚え書き

naoto : 技術全般 2008/10/7 19:11

Blogger's Avatar

こんばんわ。なおとです。

つい最近の仕事のことですが、CRONを使った自動実行について手間取ってしまったので、復習をしておきます。 以下はあくまで一例で、OSの違いなどでバリエーションがありえます。

CRONTAB

  • ユーザ毎のCRONTAB
    • /var/spool/cron/∗ など
  • システムのCRONTAB
    • /etc/crontab [600 or 644] root
    • /etc/cron.d/∗ [600 or 644] root

あるCRONのジョブを実行するタイミングと、その内容を登録するところです。/etc/crontabはできるだけ編集しないのが作法です。

典型的なタイミング(毎日深夜、など)で実行する処理は、ここで登録しなくても用意されているディレクトリにスクリプトを置いておけば、実行されます。

システムのCRON用スクリプト

実際にはCRONTABの中では複雑なことは書きづらいので、シェルスクリプトなどを登録しておきます。目的の処理をする実体は、そのスクリプトの中に記述します。

  • /etc/cron.daily/∗ [755] root
  • /etc/cron.hourly/∗ [755] root
  • /etc/cron.monthly/∗ [755] root
  • /etc/cron.weekly/∗ [755] root
  • ほか [755] ∗ など

CRONTABをユーザーに持たせるとどこにいったのか分かりにくくなることがあるので、できれば避けます。今回もその辺を整理してすっきりしました。

CRONとapacheで共通の処理対象があるとき

CRONのジョブからなにかファイルを生成するとき、apache httpdからも同じディレクトリ/ファイルを操作することがある場合には、ファイルやディレクトリの所有者、実行権限に気をつけます。具体的には次のような仕込みをします。

共用するユーザは、ある共通のグループ(たとえば、apacheグループ)に参加させておきます。 生成されるファイルを置くディレクトリには、セットグループIDをつけておきます。

CRONのジョブは、rootではなくapacheユーザで実行します。 システムのCRONTABでは、実行時のユーザを指定するようになっているので、/etc/cron.d/を使います。

そこに登録しておいたスクリプトの実行時ユーザはapacheになり、生成されるファイルの所有者とグループもapacheになります。 以上です。

ここにFTPやファイル共有なども絡むともう少し考えることが多くなるかもしれませんが、だいたいこれでOKです。 こういうことは忘れやすいので、ときどきは実際に手を動かしておかないと身につかないものですね。

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.