|
|
Cron によるプログラムの自動実行
本ページは 2008-04-01 更新されました
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
詳細説明
以下のコマンドで cron と crontab のマニュアルが読めます。
# 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) | クリエイティブワークの検索エンジン
|