技林TOP > 自宅サーバ構築メモ > cron


≫cronとは

cron とは、定期的にコマンドやプログラムを実行する機能を指します。
crond というデーモンとして動いています。

関係するファイルやディレクトリは、以下の様なものがあります。

  • /etc/crontab
  • /etc/cron.d/
  • /etc/cron.daily/
  • /etc/cron.hourly/
  • /etc/cron.monthly/
  • /etc/cron.weekly/

  • /var/spool/cron/

≫crontabファイルを読み解く

crontab は、cron を実行するための情報が書かれています。

[crontab]
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
59 4 * * * root run-parts /etc/cron.daily
5 4 * * 0 root run-parts /etc/cron.weekly
9 4 1 * * root run-parts /etc/cron.monthly

SHELL=/bin/bash
cronが使用するシェルを指定します。

PATH=/sbin:/bin:/usr/sbin:/usr/bin
cronが使用するPATHを指定します。

MAILTO=""
ここで指定したユーザにcronの実行結果をメールします。MAILTO="" とすると、メールしません。MAILTO行自体がなければ、crontabファイルの所有者にメールを送ります(デフォルトはroot)。

HOME=/
cronを使用する際のホームディレクトリを指定します。

# run-parts 行より下が、実際の命令を記述している行になります。

書式は
分 時 日 月 曜日 実行ユーザ run-parts command

それぞれ半角スペースで区切ります。
全ての該当させる場合は * (アスタリスク)を指定します。

01 * * * * root run-parts /etc/cron.hourly
は、全ての曜日、全ての月、全ての日、全ての時刻の 1分に root 権限で /etc/cron.hourly を実行するということです。
この場合、/etc/cron.hourlyはディレクトリで、run-parts というオプションでディレクトリ内のシェルを全て実行するという意味です。

crontabファイルに設定を追加することで、定期的にコマンドの実行やプログラムの起動を行うことが可能です。
ただし、その場合は root で実行することになります。

一般的には、以下の crontabコマンドを実行して、ユーザごとの cron を仕込みます。

≫crontabコマンド

$ crontab -e

実行したユーザの cron を編集するために、viが起動します。
記述するのは、crontabファイルの # run-parts 以下と同様です。

分 時 日 月 曜日 コマンド

  • 0〜59で指定。*(ワイルドカードで全指定)

  • 0〜23で指定。*(ワイルドカードで全指定)

  • 1〜31で指定。*(ワイルドカードで全指定)

  • 1〜12で指定。*(ワイルドカードで全指定)
  • 曜日
    0〜7で指定。0,7が日曜日、1が月曜日、6が土曜日。*(ワイルドカードで全指定)
  • コマンド
    指定するコマンドは実行権限が必要
例えば、

5 * * * * コマンド
毎時5分にコマンドを実行します。

0,10,20,30,40,50 * * * * コマンド
10分ごとにコマンドを実行します。

*/10 * * * * コマンド
10分ごとにコマンドを実行します。

0,30 * * * 1-5 コマンド
月曜から金曜は毎時0分と30分にコマンドを実行します。

crontab で設定した cron は /var/spool/cron/ユーザ名 というファイルに保存されます。
/var/spool/cron/ユーザ名 を直接編集しても、OKです

cron の設定状況を出力するコマンドは、

$ crontab -l

cron の設定を削除するには、

$ crontab -r

≫実行結果

cron が実行されると、指定したユーザ宛てにメールが送信されます。

もしくは、/var/log/cron にログファイルがあります。


技林TOP > 自宅サーバ構築メモ > cron
(C) bayashi.net