CRONTAB(5) FreeBSD ファイルフォーマットマニュアル CRONTAB(5)
名称
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 つの欄 — 1 ヶ月中の日 および曜日 — で指定でき ます。両方の欄が領域限定されている (すなわち * でない ) 場合、コマンドは どちらかの欄が現在の時刻と一致するときに実行されます。たとえば ‘‘30 4 1,15 * 5’’ は各月の 1 日および 15 日に加えて全ての金曜日において、午前 4:30 にコマンドを実行させます。 最初の 5 個の欄の代りに、 8 種類の特殊文字列のうちのいずれかが登場しても 良いです: 文字列 意味 |
------- |
||||
起動時に 1 回実行。 |
||||
年に 1 回実行、すなわち "0 0 1 1 *"。 |
||||
(@yearly と同じ) |
||||
月に 1 回実行、すなわち "0 0 1 * *"。 |
||||
週に 1 回実行、すなわち "0 0 * * 0"。 |
||||
日に 1 回実行、すなわち "0 0 * * *"。 |
||||
(@daily と同じ) |
||||
時間に 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" |
関連項目
機能拡張項目
曜日を指定するとき、日 0 と日 7 は日曜日とみなされます。 BSD および ATT はこの件については一致していないようです。 リスト指定および領域指定は同じ欄内で指定できます。"1-3,7-9" は ATT や BSD 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) オプションを使用して、時 刻シフトがいつ起るのかを判定してください。 FreeBSD 10.0 January 24, 1994 FreeBSD 10.0 |