Top

ドメイン名入門
入門ガイド
管理ガイド基礎
[Email]
[FTP]
[Web]
[Ports]
[Shell]
  標準コマンド
  限定コマンド
  Cron
  Rc
  タイムゾーン
  Finger
  du
  Getback
[User]
[CPX]
[Webmin]
管理上級編


v3
Top
v3
Start
v3
Email
v3
Ftp
v3
Web
v3
Ports
v3
Shell
v3
User
v3
Perl
v3
Java
v3
System
v3
CPX


Cron によるプログラムの自動実行

本ページは 2008-04-01 更新されました


注意:Cron によるプログラムの自動実行は、コントロールパネル「CPX」でも設定できます。「CPX」による設定は「CPX」マニュアルページ タスクの作成・編集・停止・削除を参照ください。

vps サーバー v3 では、決められた時間にコマンドを自動実行する cron デーモンが使えます。
vps サーバー v3 では、Shell へのアクセス権を持つユーザーは、固有の crontab を使って、あらかじめ決められた日時にコマンドを自動実行させることができます。

crontab の作成

user_name ユーザー権限で crontab コマンドを使って設定を行った場合は、FreeBSD の場合 /var/cron/tabs/user_name、Linux の場合 /var/spool/cron/user_name に設定が保存されます。
root 権限で設定する場合は、/etc/crontab ファイルに実行権限ユーザーを指定して保存することもできます。
crontab の各行は、環境変数設定行、cron job 登録行、 # で始まるコメント行のいずれかとなります。

crontab の環境変数設定は、以下のようになります。

NAME = VALUE

cron の環境変数には SHELL、LOGNAME、USER、HOME が含まれます。
それらに加えて、MAILTO 環境変数があります。
cron によって生成された全ての出力が MAILTO で指定されたアドレスに送付されます。
(指定されていない場合は、crontab の所有者ユーザーに送られます)
以下のように、MAILTO が空文字として指定された場合はメールは送られません。

MAILTO = ""

cron table 登録は 5 個の時間欄と、それに続くコマンド欄となります。
コマンドは時間欄で指定された時間に実行されます。
5 個の時間欄の意味は以下です。


欄             可能な値

-----          --------------

分             0-59

時             0-23

日付           1-31

月             1-12, jan, feb, mar, apr, may, jun, jul, aug, sep, oct, 

               nov, dec

曜日           0-7, sun, mon, tue, wed, thu, fri, sat (0 = "sun", 7 = "sun")

    

各欄にはアスタリスク (*) が使えます。
アスタリスクは欄が受取れる全ての時間を意味します。
また、範囲指定も可能です。
例:2-5、8-11
リスト指定、範囲指定を含むリスト指定、も可能です。
例:1,3,5、1,3,8-11
/ で一定間隔ごとの時間指定ができます。
例:0-59/15、1-31/3、*/2

パラメータを含むことのできるコマンド指定が cron table の 6 番目で最後の欄になります。

注意: cron job の各行は、改行マークで区切られている必要があります。
改行マークが確実に含まれていることを確認下さい。
自信がない場合は、空行を入れるのも良いかもしれません。

以下は、vnukelog コマンド実行の事例です。


# cron によって生成された全ての出力が MAILTO で指定された

# アドレス "webmaster@mycompany.com" に送付されます

MAILTO="webmaster@mycompany.com"



# "vnukelog" コマンドを毎日午前 1:15 (15 1) に実行します

15 1 * * *   /usr/local/bin/vnukelog



# "vnukelog" コマンドを毎月一日 (1) 午後 11:40 (40 23) に実行します

40 23 1 * *  /usr/local/bin/vnukelog



# "vnukelog" コマンドを月曜日から金曜日まで (1-5)

# 午前 9 時と午後 5時 (9,17) 台の

# 前半 30 分間に 10 分おきに (0-30/10) に実行します

0-30/10 9,17 * * 1-5  /usr/local/bin/vnukelog



# "vnukelog" コマンドを毎年一月 (jan) の日曜日毎 (sun) 

# 午前四時、午前八時、正午、午後四時、午後八時、(0 */4) に実行します

# 00:00 と 24:00 のどちらにも実行されません

0 */4 * jan sun  /usr/local/bin/vnukelog



# "vnukelog" コマンドを毎月 (*) 毎週金曜日 (fri) かつ一日と十五日 (1,15)

# 午前 4:30 (30 4) に実行します

30 4 1,15 * fri  /usr/local/bin/vnukelog



# "vnukelog" コマンドを毎年八月十九日 (19) (8)、(19)  (aug)

# 零時 (0 0) に実行します

0 0 19 8 *  /usr/local/bin/vnukelog

0 0 19 aug *  /usr/local/bin/vnukelog

    

crontab の登録

ユーザーのホームディレクトリに cronjobs の名前で設定を保存した場合、以下の例のように crontab コマンドを実行してシステムに登録する必要があります。

# crontab ~/cronjobs

上記によって、~/cronjobs が cron システムデーモンに登録されます。
cron システムデーモンに登録済みの内容の表示は以下のコマンドで行います。

# crontab -l

root ユーザーによる、他のユーザーの登録済み内容の表示は、以下コマンドで行います。

# crontab -u USER -l

crontab -e による cron の作成と登録

Shell 権限のある user_name の cron を crontab [-u user_name] -e コマンドで作成・登録することができます。
このコマンドだけで、一つの流れの中で行うことができ、お勧めです。
crontab [-u user_name] -e コマンドを実行すると cronjob を記述するファイルの vi による編集モードになります。
初めて実行した場合は、空のファイルが開きます。
すでに登録がある場合は登録済みのファイルが開きます。
記述のルールは上記の説明と全く同一です。
ファイルを保存すると自動的に登録も完了します。

上記のファイルは、デフォルトで以下のパスに以下の名称で保存されます。

FreeBSD
/var/cron/tabs/user_name Linux
/var/spool/cron/user_name

/etc/crontab

システムデフォルトの cron が /etc/crontab ファイルに登録されています。
このファイルに Shell 権限のある user_name の cron を登録することも可能です。
この場合は時間指定と実行コマンドの間に実行権限者のユーザー名を指定しなければなりません。

以下が root ユーザーにより newsyslog が指定されている例です。

0 * * * * root newsyslog

詳細説明

以下のコマンドで croncrontab のマニュアルが読めます。

# man cron
# man crontab
# man 5 crontab


SPEEDEX サポートポリシー

Copyright @ Cyber Vision Hosting Co., Ltd. All rights reserved.
Email: support@speedex.ne.jp


株式会社サイバービジョンホスティング提供サービス一覧
再販売用レンタルサーバーのSPEEDEX | VPS(仮想専用サーバー) | 共用サーバー | 独自ドメイン取得・運用 | SSLサーバー証明書 | ワイルドカードサーバー証明書 | SEO | Google Apps(TM) | クリエイティブワークの検索エンジン