Crontab

codice_1（クロンタブ、あるいはクローンタブ、クーロンタブとも）コマンドはUnix系オペレーティングシステム (OS) において、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。標準入力からコマンド列を読み取り、crontabと呼ばれるファイルにそれを記録する。この記録を元に定時になると、その命令内容を読み取り、実行が行われる。cronという名称はギリシア語のクロノス () に由来するという説がある（Command Run ON の略という説も）。日本語ではクーロンという読みが慣習的に広く用いられているが、英語では通常クロンまたはクローンと発音する。
一般にcodice_1コマンドで編集されたスケジュール内容は、codice_3デーモンにより実行される。codice_3はバックグラウンドで稼動し、毎分ごとに実行すべきスケジュールがないか確認し、もし実行すべきジョブがあれば、それを実行する。このジョブは「cron job」とも呼ばれる。
crontabファイル.
crontabファイルには、ジョブのリストおよびcronデーモンへの命令が書かれる。各ユーザは自身の個人用crontabファイルを持つ。さらに、システム全体用のcrontabファイルも存在する（/etc またはそのサブディレクトリ下）。このシステム全体用のcrontabはシステム管理者のみが編集可能なものとなっている。
crontabファイルの各行は、空白またはタブで区切られたフィールド列から構成される特有の形式となっている。各フィールドには単一もしくは複数の値が書かれる。
特殊記号.
一フィールド中で複数の値を指定するには、いくつかの方法がある:
cron実装によっては、いくつかの追加拡張をおこなっているものもある。スラッシュ (/) で一定値ごとの間隔を表現する: 例) 時フィールドでの"*/3"指定は"0,3,6,9,12,15,18,21"と同じ意を示す。つまり、"*"の場合は毎時をあらわすが、"/3"を指定すると、*で適用される値の範囲内における1番目・4番目・7番目...といった意を表す。
フィールド.
注:
第6フィールド以降の行の残りの箇所には実行すべきコマンドを指定する。
例.
AIX システムにおけるadm ユーザのcrontabファイル.
 # SYSTEM ACTIVITY REPORTS
 # 平日・午前8時-午後5時の活動履歴は20分おき
 # 土曜日・日曜日の活動履歴は毎時
 # 平日・午後6時-午前7時の活動履歴は毎時
 # 平日 18:05 に概要報告を準備する
 0,20,40 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 &
 0 * * * 0,6 /usr/lib/sa/sa1 &
 0 18-7 * * 1-5 /usr/lib/sa/sa1 &
 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 3600 -ubcwyaqvm &
よくあるミス.
 # ミス:
 1 2 3 4 5 touch ~/error_`date "+%Y%m%d"`.txt
この場合、デーモンからは右のようなエラーメッセージがメール送信される:「/bin/sh: unexpected EOF while looking for `」
以下のように修正すると良い
 # エスケープしたもの:
 1 2 3 4 5 touch ~/right_$(date +\%Y\%m\%d).txt
 # 夏時間移行時に備える
 59 1 1-7 4 0 /root/shift_my_times.sh
一見すると、上記は4月第一日曜日の午前1時59分にコマンドshift_my_times.shを実行するように見えるが、そうではなく、4月1日から4月7日までの毎日、および、4月中の日曜日全てで実行されてしまう。
これを書き直すとすれば、以下のようにするのが一つの方法である。
 # 夏時間移行に備える
 59 1 1-7 4 * test `date +\%w` = 0 && /root/shift_my_times.sh
 # ログファイルに日付を追加
 * 0,2,4,6,8,10,12,14,16,18,20,22 * * * date » /var/log/date.log
これは、各偶数時に毎分実行されてしまう。
この意図を表現するには以下のようにする:
 # 毎2時間おきに date コマンドを実行
 0 0,2,4,6,8,10,12,14,16,18,20,22 * * * date » /var/log/date.log
 # もっと簡潔に書くと:
 0 */2 * * * date » /var/log/date.log
Emailの抑止.
crontab により実行されたコマンドから出力が行われると、cron デーモンは通常その出力結果をユーザにメールで配送する。
 >/dev/null 2>&1
 MAILTO=""
非標準の定義済みスケジューリング定義.
一部のcron実装では、以下のような非標準のマクロをサポートしている。
codice_10はデーモンが起動した時にジョブを1回だけ実行するように設定する。cronは通常は再起動しないため、これは通常マシンのブート時に対応する。codice_10の動作はDebianで提供されるcronなどのいくつかの種類のcronで強制されるため、単純にデーモンを再起動しただけでcodice_10ジョブが再実行されることはない。
codice_10は、特定のユーザー下でサーバーやデーモンを起動する必要がある場合や、ユーザーがプログラムを起動するためにinitを設定する権限がない場合に役に立つことがある。
crontabコマンド.
ジョブのスケジュールを実際にcronデーモンに伝えるにはcrontabコマンドを使う。crontabファイル（例:example.crontab）を作成して、crontabコマンドの引数として指定する（codice_14）。もしくは、引数無しで起動した上で、標準入力からコマンドを直接指定することもできる。