.\"/* Copyright 1988,1990,1993,1994 by Paul Vixie .\" * All rights reserved .\" * .\" * Distribute freely, except: don't remove my name from the source or .\" * documentation (don't take credit for my work), mark your changes (don't .\" * get me blamed for your possible bugs), don't alter or remove this .\" * notice. May be sold if buildable source is provided to buyer. No .\" * warrantee of any kind, express or implied, is included with this .\" * software; use at your own risk, responsibility for damages (if any) to .\" * anyone resulting from the use of this software rests entirely with the .\" * user. .\" * .\" * Send bug reports, bug fixes, enhancements, requests, flames, etc., and .\" * I'll try to keep a version up to date. I can be reached as follows: .\" * Paul Vixie uunet!decwrl!vixie!paul .\" */ .\" .\" %FreeBSD: src/usr.sbin/cron/crontab/crontab.5,v 1.25 2004/07/02 23:12:40 ru Exp % .\" .\" $FreeBSD$ .\" .\" WORD: day of the week 曜日 .Dd January 24, 1994 .Dt CRONTAB 5 .Os .Sh 名称 .Nm crontab .Nd cron を駆動するための一覧表 .Sh 解説 1 つの .Nm ファイルには ``この日のこの時間にこのコマンドを実行せよ'' という一般的な形式の .Xr cron 8 デーモンへの複数の指示が含まれています。 各々ユーザは各自所有の crontab を持ち、crontab に書かれたコマンドはその crontab を所有するユーザとして実行されることになります。UUCP と News は 通常それ自身所有の crontab を持ち、cron コマンドの一部として .Xr su 1 を実際に実行させる必要のないようにしています。 .Pp 空行と、先頭の空白およびタブは無視されます。 最初の非空白文字がポンド記号 (#) である行は注釈行であり、無視されます。 注釈は cron コマンドと同じ行にあってはいけません。 なぜなら、注釈自身がコマンドの一部とみなされるからです。 同様に、注釈は環境変数を設定する行と同じ行にあって はいけません。 .Pp crontab の中で有効なのは環境変数の設定かまたは cron コマンドのどちらかです。 環境変数の設定は次のような形で行います。 .Bd -literal name = value .Ed .Pp ここで等号 (=) の周囲の空白は有っても良いですが、 .Em value の中で = に引き続くスペースでない部分だけが .Em name に割当てられる値となります。 .Em value 文字列はクォート (シングルクォートまたはダブルクォートですがどちらかに統一します) で囲うこともでき、そのときには = に続くブランクや末尾のブランク を含むことができます。 .Em name 文字列もクォート (シングルクォートまたはダブルクォートですがどちらかに統一します) で囲うこともでき、前置、後置および内部の空白を保ちます。 .Pp いくつかの環境変数は自動的に .Xr cron 8 デーモンによって設定されます。 .Ev SHELL は .Pa /bin/sh に設定され、 .Ev LOGNAME と .Ev HOME はその crontab の所有者の .Pa /etc/passwd 行を元に設定されます。 .Ev HOME と .Ev SHELL は、crontab ファイル中で設定することで上書きできますが、 .Ev LOGNAME はできません。 .Pp (別注: .Ev LOGNAME 変数は .Bx システム上では .Ev USER と呼ばれることがあります。このようなシステム上では .Ev USER も設定されます。) .Pp .Ev LOGNAME , .Ev HOME , .Ev SHELL に加え、 ``この'' crontab で実行したコマンドの実行結果をメールで送る理由がある場合、 .Xr cron 8 は .Ev MAILTO を見ます。 .Ev MAILTO が定義されていて (かつ空でない) とき、そこで指定された名前のユーザへメール が送られます。 なお .Ev MAILTO に複数の受信者をコンマで区切って指定すると、複数の受信者へメールを送れます。 .Ev MAILTO が定義されているが空のとき (MAILTO="")、メールは送られません。 その他の場合にはメールは crontab の所有者に送られます。 cron インストール時に、メーラとして .Pa /usr/lib/sendmail ではなく .Pa /bin/mail を使う場合、このオプションは有用です -- .Pa /bin/mail はエイリアスを行いませんし、UUCP は通常自分宛のメールを読みません。 .Pp cron コマンドのフォーマットはほとんど V7 標準であり、多くの上位互換拡張を 持っています。各行は 5 つの時間と日付の欄、システム crontab ファイルの場合は続いてユーザ名 (``:<グループ>'' および ``/<ログインクラス>'' の添字が付くこともあります)、 その後にコマンドが続きます。分、時間、月の欄と現在の時刻が一致し、 .Em かつ 2 つの日付欄 (月における日または曜日) のうちの少なくとも 1 つと 現在の時刻が一致したとき (下記の ``注'' 参照) に、コマンドは .Xr cron 8 により実行されます。 .Xr cron 8 は 1 分ごとに cron エントリを調べます。時間と日付の欄は次のとおりです。 .Bd -literal -offset indent 欄          許される値 ------------ ------------------------------------------------ 分 0-59 時間 0-23 月における日 1-31 月 1-12 (または名前、下記参照) 曜日 0-7 (0 および 7 は日曜のこと。名前を用いてもよい) .Ed .Pp 欄はアスタリスク (*) でも良いですが、このときには常に "最初-最後" を表すこ とになります。 .Pp 数値領域を指定できます。領域指定は、2 つの数をハイフンでつなげたものです。 指定された領域は、両端を含みます。 たとえば ``時間'' エントリの 8-11 は、 8, 9, 10, 11 時の実行を指定することになります。 .Pp リスト指定もできます。リスト指定はコンマによって数 (または領域指定) をつな げた 1 組のことです。例: ``1,2,5,9'', ``0-4,8-12''。 .Pp 間隔値は領域指定と共に用いることができます。領域指定に続けて ``/<数>'' を指定すると、その領域を通じてその数の値だけ飛ばす値になります。 たとえば ``0-23/2'' は時間の欄で用いられると、2 時間おきにコマンドを実行 することになります (別の方法で V7 標準で表せば ``0,2,4,6,8,10,12,14,16,18,20,22'' となります)。間隔指定はアスタリスクの 後で付けても構いません。たとえば ``2 時間おきに全て'' ということをしたい なら ``*/2'' とするだけです。 .Pp ``月'' および ``曜日'' の指定には、名前を使用することができます。 曜日と月の指定には、最初の 3 文字を使ってください (この場合、 大文字・小文字の区別はありません)。名前による領域指定やリスト指定はでき ません。 .Pp ``6 番目'' の欄 (行の残りの部分) には実行したいコマンドを指定します。行の 中のコマンド部全体、これは改行または % 文字までですが、は .Pa /bin/sh かまたはその cron ファイルの .Ev SHELL 変数で指定されたシェルによって実行されます。コマンド内のパーセント記号 (%) はバックスラッシュ (\\) でエスケープされない限り改行文字に変換され、そ の最初の % 以降の全てのデータはそのコマンドの標準入力となります。 .Pp 注: コマンド実行の日付は 2 つの欄 \(em 1 ヶ月中の日 および曜日 \(em で指定できます。両方の欄が領域限定されている (すなわち * でない ) 場合、コマンドは .Em どちらかの 欄が現在の時刻と一致するときに実行されます。たとえば ``30 4 1,15 * 5'' は各月の 1 日および 15 日に加えて全ての金曜日において、 午前 4:30 にコマンドを実行させます。 .Pp 最初の 5 個の欄の代りに、 8 種類の特殊文字列のうちのいずれかが登場しても良いです: .Bd -literal -offset indent 文字列 意味 ------ ------- @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 * * * *"。 .Ed .Sh cron ファイルの例 .Bd -literal # 既定設定を 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" .Ed .Sh 関連項目 .Xr crontab 1 , .Xr cron 8 .Sh 機能拡張項目 曜日を指定するとき、日 0 と日 7 は日曜日とみなされます。 .Bx および .Tn ATT はこの件については一致していないようです。 .Pp リスト指定および領域指定は同じ欄内で指定できます。"1-3,7-9" は .Tn ATT や .Bx cron では受け付けません -- "1-3" や "7,8,9" だけが許されます。 .Pp 領域指定は ``間隔指定'' を含むことができますので "1-9/2" は "1,3,5,7,9" と 同じことになります。 .Pp 月の名前や曜日の名前は、名前で指定できます。 .Pp 環境変数は crontab の中で指定できます。 .Bx や .Tn ATT では 子プロセスに渡された環境変数は基本的に .Pa /etc/rc から渡された環境変数です。 .Pp crontab 所有者へメールされる ( .Bx はできません) コマンド出力結果は、 crontab 所有者以外の人へメールしたり (SysV はできません)、 この機能を停止して誰にもメールを送らなくできます (SysV はこれもできません)。 .Pp 最初の 5 個の欄の場所に記述可能な .Sq @ コマンドすべては、拡張です。 .Sh 作者 .An Paul Vixie Aq paul@vix.com .Sh バグ 夏時間というものがある奇妙な 70 の国々のいずれかにいる場合、 巻き戻しまたは早回しの期間へスケジュールされたジョブが影響を受けます。 一般的には、この期間へジョブをスケジュールすることは良いことではありません。 .Pp US タイムゾーンでは (IN, AZ, HI を除き)、時刻シフトは午前 2 時に起ります。 他の国では、 .Xr zdump 8 プログラムの冗長 .Fl ( v ) オプションを使用して、時刻シフトがいつ起るのかを判定してください。