Crontabについて詳しく解説

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 によって累積的であると見なされます。

 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 時まで)。

 Crontabについて詳しく解説
  1. كرون – arabe
  2. Cron – breton
  3. Cron (Unix) – catalan
  4. Cron – tchèque
  5. Cron – danois
  6. Cron – allemand

Crontabについて詳しく解説・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。