tail head cat sleep
QR code linking to this page

manページ  — CRONTAB

名称

crontab – cron を駆動するための一覧表

内容

解説

1 つの crontab ファイルには ``この日のこの時間にこのコマンドを実行せよ'' という一般的な形式の cron(8) デーモンへの複数の指示が含まれています。 各々ユーザは各自所有の crontab を持ち、crontab に書かれたコマンドはその crontab を所有するユーザとして実行されることになります。UUCP と News は 通常それ自身所有の crontab を持ち、cron コマンドの一部として su(1) を実際に実行させる必要のないようにしています。

空行と、先頭の空白およびタブは無視されます。 最初の非空白文字がポンド記号 (#) である行は注釈行であり、無視されます。 注釈は cron コマンドと同じ行にあってはいけません。 なぜなら、注釈自身がコマンドの一部とみなされるからです。 同様に、注釈は環境変数を設定する行と同じ行にあって はいけません。

crontab の中で有効なのは環境変数の設定かまたは cron コマンドのどちらかです。 環境変数の設定は次のような形で行います。

    name = value

ここで等号 (=) の周囲の空白は有っても良いですが、 value の中で = に引き続くスペースでない部分だけが name に割当てられる値となります。 value 文字列はクォート (シングルクォートまたはダブルクォートですがどちらかに統一します) で囲うこともでき、そのときには = に続くブランクや末尾のブランク を含むことができます。 name 文字列もクォート (シングルクォートまたはダブルクォートですがどちらかに統一します) で囲うこともでき、前置、後置および内部の空白を保ちます。

いくつかの環境変数は自動的に cron(8) デーモンによって設定されます。 SHELL /bin/sh に設定され、 LOGNAME HOME はその crontab の所有者の /etc/passwd 行を元に設定されます。 HOME SHELL は、crontab ファイル中で設定することで上書きできますが、 LOGNAME はできません。

(別注: LOGNAME 変数は BSD システム上では USER と呼ばれることがあります。このようなシステム上では USER も設定されます。)

LOGNAME, HOME, SHELL に加え、 ``この'' crontab で実行したコマンドの実行結果をメールで送る理由がある場合、 cron(8) MAILTO を見ます。 MAILTO が定義されていて (かつ空でない) とき、そこで指定された名前のユーザへメール が送られます。 なお MAILTO に複数の受信者をコンマで区切って指定すると、複数の受信者へメールを送れます。 MAILTO が定義されているが空のとき (MAILTO="")、メールは送られません。 その他の場合にはメールは crontab の所有者に送られます。 cron インストール時に、メーラとして /usr/lib/sendmail ではなく /bin/mail を使う場合、このオプションは有用です -- /bin/mail はエイリアスを行いませんし、UUCP は通常自分宛のメールを読みません。

cron コマンドのフォーマットはほとんど V7 標準であり、多くの上位互換拡張を 持っています。各行は 5 つの時間と日付の欄、システム crontab ファイルの場合は続いてユーザ名 (``:<グループ>'' および ``/<ログインクラス>'' の添字が付くこともあります)、 その後にコマンドが続きます。分、時間、月の欄と現在の時刻が一致し、 かつ 2 つの日付欄 (月における日または曜日) のうちの少なくとも 1 つと 現在の時刻が一致したとき (下記の ``注'' 参照) に、コマンドは cron(8) により実行されます。 cron(8) は 1 分ごとに cron エントリを調べます。時間と日付の欄は次のとおりです。

     欄                   許される値
------------   ------------------------------------------------
     分       0-59
    時間      0-23
月における日  1-31
     月       1-12 (または名前、下記参照)
    曜日      0-7 (0 および 7 は日曜のこと。名前を用いてもよい)

欄はアスタリスク (*) でも良いですが、このときには常に "最初-最後" を表すこ とになります。

数値領域を指定できます。領域指定は、2 つの数をハイフンでつなげたものです。 指定された領域は、両端を含みます。 たとえば ``時間'' エントリの 8-11 は、 8, 9, 10, 11 時の実行を指定することになります。

リスト指定もできます。リスト指定はコンマによって数 (または領域指定) をつな げた 1 組のことです。例: ``1,2,5,9'', ``0-4,8-12''。

間隔値は領域指定と共に用いることができます。領域指定に続けて ``/<数>'' を指定すると、その領域を通じてその数の値だけ飛ばす値になります。 たとえば ``0-23/2'' は時間の欄で用いられると、2 時間おきにコマンドを実行 することになります (別の方法で V7 標準で表せば ``0,2,4,6,8,10,12,14,16,18,20,22'' となります)。間隔指定はアスタリスクの 後で付けても構いません。たとえば ``2 時間おきに全て'' ということをしたい なら ``*/2'' とするだけです。

``月'' および ``曜日'' の指定には、名前を使用することができます。 曜日と月の指定には、最初の 3 文字を使ってください (この場合、 大文字・小文字の区別はありません)。名前による領域指定やリスト指定はでき ません。

``6 番目'' の欄 (行の残りの部分) には実行したいコマンドを指定します。行の 中のコマンド部全体、これは改行または % 文字までですが、は /bin/sh かまたはその cron ファイルの SHELL 変数で指定されたシェルによって実行されます。コマンド内のパーセント記号 (%) はバックスラッシュ (\) でエスケープされない限り改行文字に変換され、そ の最初の % 以降の全てのデータはそのコマンドの標準入力となります。

注: コマンド実行の日付は 2 つの欄 &#151; 1 ヶ月中の日 および曜日 &#151; で指定できます。両方の欄が領域限定されている (すなわち * でない ) 場合、コマンドは どちらかの 欄が現在の時刻と一致するときに実行されます。たとえば ``30 4 1,15 * 5'' は各月の 1 日および 15 日に加えて全ての金曜日において、 午前 4:30 にコマンドを実行させます。

最初の 5 個の欄の代りに、 8 種類の特殊文字列のうちのいずれかが登場しても良いです:

文字列             意味
------          -------
@reboot         起動時に 1 回実行。
@yearly         年に 1 回実行、すなわち "0 0 1 1 *"。
@annually       (@yearly と同じ)
@monthly        月に 1 回実行、すなわち "0 0 1 * *"。
@weekly         週に 1 回実行、すなわち "0 0 * * 0"。
@daily          日に 1 回実行、すなわち "0 0 * * *"。
@midnight       (@daily と同じ)
@hourly         時間に 1 回実行、すなわち "0 * * * *"。

cron ファイルの例

# 既定設定を cron でオーバライドし、コマンドの実行に /bin/sh を使用 SHELL=/bin/sh # これが誰の crontab であっても、全ての出力は `paul' にメールする MAILTO=paul # # 毎日 深夜 0 時 5 分 に実行する 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # 毎月の最初の日の PM 2:15 に実行する -- 出力結果は paul にメールされる 15 14 1 * * $HOME/bin/monthly # ウィークディの PM 10 時に実行して Joe をうるさがらせる 0 22 * * 1-5    mail -s "It's 10pm" joe%Joe,%%Where are your kids?% 23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday" 5 4 * * sun echo "run at 5 after 4 every sunday"

関連項目

crontab(1), cron(8)

機能拡張項目

曜日を指定するとき、日 0 と日 7 は日曜日とみなされます。 BSD および ATT はこの件については一致していないようです。

リスト指定および領域指定は同じ欄内で指定できます。"1-3,7-9" は ATTBSD cron では受け付けません -- "1-3" や "7,8,9" だけが許されます。

領域指定は ``間隔指定'' を含むことができますので "1-9/2" は "1,3,5,7,9" と 同じことになります。

月の名前や曜日の名前は、名前で指定できます。

環境変数は crontab の中で指定できます。 BSD ATT では 子プロセスに渡された環境変数は基本的に /etc/rc から渡された環境変数です。

crontab 所有者へメールされる ( BSD はできません) コマンド出力結果は、 crontab 所有者以外の人へメールしたり (SysV はできません)、 この機能を停止して誰にもメールを送らなくできます (SysV はこれもできません)。

最初の 5 個の欄の場所に記述可能な '@' コマンドすべては、拡張です。

作者

Paul Vixie <paul@vix.com>

バグ

夏時間というものがある奇妙な 70 の国々のいずれかにいる場合、 巻き戻しまたは早回しの期間へスケジュールされたジョブが影響を受けます。 一般的には、この期間へジョブをスケジュールすることは良いことではありません。

US タイムゾーンでは (IN, AZ, HI を除き)、時刻シフトは午前 2 時に起ります。 他の国では、 zdump(8) プログラムの冗長 -( -v) オプションを使用して、時刻シフトがいつ起るのかを判定してください。


CRONTAB (5) January 24, 1994

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

If you have an emergency I'm great at running around and flailing my arms
— Artur Bagyants