crontab は、 cronプログラムの構成テーブルを編集できる Unix プログラムの名前です。これを拡張して、決まった時間に起動されるアプリケーションのことを cron (英語ではcron job ) と呼ぶことがよくあります。
crontabコマンドは、実行しているユーザーに関連するファイルを実際に編集し、構文をチェックします。このファイルは /var ツリーにあります。例:
- /var/spool/cron/tabs/user (SuSE GNU/Linux)
- /var/spool/cron/crontabs/user (Debian GNU/Linux および Ubuntu)
- /var/cron/tabs/user (FreeBSD および OpenBSD)
したがって、 Debianマシン上の root ユーザーの場合、 cronテーブルは次の場所に保存されます。
- /var/スプール/cron/crontabs/root
Debian システムには、/etc/crontab に集中管理されたcrontabもあります。
構文
cron テーブルを編集するには、次のコマンドを実行するだけです。
crontab -e
このコマンドには、現在のテーブルを表示するデフォルトのエディタ (通常は vi) を起動する効果があります (したがって、crontab を初めて起動する場合は何も表示されません)。
テーブル内の各エントリ (各行) は実行されるタスクに対応し、次のように説明されます。
mm hh dd MMM DD タスク > ログ
この構文では次のようになります。
- mm は分(0 ~ 59) を表します。
- hh は時間を表します (0 ~ 23)。
- dd はその月の日付を表します (1 から 31)。
- MMM は、月の番号 (1 から 12) または月の名前の省略形 (jan、feb、tue、apr など) を表します。
- DDJ は、曜日の略称または曜日に対応する数字を表します(0 は日曜日、1 は月曜日、…)
- task は実行するコマンドまたはシェル スクリプトを表します
- log は、操作のログを保存するファイルの名前を表します。 > log 句が指定されていない場合、cron は確認メールを自動的に送信します。これを回避するには、 > /dev/nullを指定してください。
時間単位ごとに (分/時間/…) の表記が可能です。
- * : 単位時間ごと
- 2-5 : 時間の単位 (2,3,4,5)
- */3 : 3 時間単位ごと (0、3、6、…)
- 5.8 : 時間単位 5 および 8
同じ行に時間単位「その月の日付の番号」と時間単位「曜日」が指定されている場合、これらは crontab によって累積的であると見なされます。

例
特定の時間間隔で空きディスク領域の自動ログ (たとえば、/tmp/log_df.txt ファイル) を作成したいと考えてみましょう (df コマンド)。
- 毎日午後 11 時 30 分:
30 23 * * * df >>/tmp/log_df.txt
- 1時間ごとに5分ずつ増加します:
5 * * * * df >>/tmp/log_df.txt
- 毎月 1 日午後 11 時 30 分:
30 23 1 * * df >>/tmp/log_df.txt
- 毎週月曜日午後10時28分:
28 22 * * 1 df >>/tmp/log_df.txt
- 毎月2日から5日午前10時12分まで
12 10 2-5 * * df >>/tmp/log_df.txt
- 毎月偶数日午後 11 時 59 分
59 23 */2 * * df >>/tmp/log_df.txt
- 5分ごと
*/5 * * * * df >>/tmp/log_df.txt
シェル スクリプトを使用して、より複雑なコマンドを自動的に実行することもできます。したがって、最初にスクリプトを作成する必要があります。次に、それを cron テーブルでタスクとして宣言します。
次のシェル スクリプト ( backup .cmd という名前で /home/backup に保存されていると仮定します) は、ccmusers という名前のファイルに MySQL レコード (たとえば、ccmusers テーブルから) をエクスポートし、その後に日-月-の下に日付が続きます。年-時-分の形式:
#!/bin/sh
DATE=$(日付 +%d-%m-%Y-%H-%M)
/usr/local/mysql/bin/mysqldump -u root ccmusers > /home/backup/ccmusers${DATE}.sql
したがって、MySQL ccmusers テーブルのバックアップとWeb ページの呼び出しを自動化するには (毎日午後 11 時 59 分)、cron テーブルに次のエントリを追加するだけで十分です。
59 23 * * * /home/backup/backup.cmd >>/dev/null 30 21 * * * wget -O /dev/null http://example.com/mapage.html >>/dev/null
時刻変更: 冬/夏時間変更を使用している場合、3 月の最終土曜日の 02:00 から 02:59 までの Cron タスクは実行されません (2 時間から 3 時間に移行します)。逆に、10 月の最終土曜日の午前 2 時から午前 2 時 59 分までの Cron タスクは 2 回実行されます (午前 3 時から午前 2 時まで)。

