Linux システムで定期的に実行する必要がある多くのタスクがあることがわかります。たとえば、データベースを更新したり、/home/ ディレクトリにあるユーザーのデータをバックアップしたりする必要がある場合があります。これらのタスクを手動で実行することもできますが、これらのタスクを自動的に実行するように Linux システムを構成すると、より効率的 (および信頼性) が高くなります。
これを行うための 1 つのオプションは、cron を使用することです。 cron デーモン (/usr/sbin/cron) を使用すると、定期的に実行されるジョブをスケジュールできます。
crontab ファイルの構文
Linux システムでは、デフォルトで cron デーモンがインストールされ、アクティブ化されます。 1 分に 1 回、現在の時刻にジョブが定義されているかどうかを確認します。 cron デーモンは、crontab というファイルを使用します。 ジョブのリストとそれらがいつ実行されるかが含まれています。 Linux システム全体に 1 つの crontab ファイルが存在します。システム上の各ユーザーは、独自の crontab ファイルを定義することもできます。
crontab ファイルの各行は、単一の cron ジョブを定義します。最初の 5 つのフィールド (空白文字 (スペースまたはタブ) で区切られている) は、
cron ジョブをいつ実行するかを定義します。次の構文を使用します:
フィールド番号 | フィールド ラベル | 範囲 |
---|---|---|
1 | 議事録 | 0-59 |
2 | 時間 | 0-23 |
3 | 日 | 1-31 |
4 | 月 | 1-12 |
5 | 平日 | 0-7 |
ユーザー crontab ファイルでは、後続のフィールド (フィールド 6 以降) で、実行するコマンドとそのオプション (存在する場合) を指定します。システム crontab ファイルでは、6 番目のフィールドは、残りのフィールド (フィールド 7 以降) でコマンドを実行するために使用されるユーザーを指定します。
cron デーモンは、任意のコマンドまたはシェル スクリプトを実行できます。ただし、コマンドまたはシェル スクリプトが実行されている場合、ユーザーの操作は利用できません。
以下は、これらのフィールドを構成するためのガイドラインです:
- 分、時間、日、または月ごとにジョブを実行する場合は、対応するフィールドにアスタリスク (*) を入力します。
- コンマで区切られたリストのフィールドに複数のエントリを含めることができます。
- 開始値と終了値をハイフンで区切って範囲を指定できます。
- /n でタイム ステップを設定できます (n はステップのサイズを表します)。
- 名前の最初の 3 文字を使用して、月と曜日を指定できます (例:MON、TUE、JAN、FEB)。文字は大文字と小文字を区別しません。ただし、文字を使用する場合、範囲やリストは使用できません。
- 平日を表す数字は、日曜日の 0 から始まり、1 週間連続して実行され、7 は再び日曜日を表します。たとえば、3 は水曜日、6 は土曜日です。
ユーザー ジョブの定義
ユーザーは、crontab コマンドを使用して独自の crontab ファイルを作成および維持します。次のオプションは、crontab コマンドで使用できます:
オプション | 説明 |
---|---|
crontab -e | 求人を作成または編集します。 vi エディターが使用されます。 |
crontab ファイル | 現在のユーザーの既存の crontab ファイルを指定されたファイルに置き換えます。ただし、ファイルに正しい構文を使用したジョブのリストが含まれていると仮定します。 |
crontab -l | 現在の仕事を表示します。 |
crontab -r | すべてのジョブを削除します。 |
たとえば、毎晩午後 5 時 5 分に /media/USB にマウントされた外部 USB ドライブにユーザーのホーム ディレクトリの内容をコピーする cron ジョブを定義するとします。以下を行う必要があります:
1. ターミナル セッションを開きます。
2. シェル プロンプトで、「crontab -e」と入力します。
# crontab -e
初めて cron ジョブを定義する場合は、ユーザー用に空の crontab ファイルが作成されます。
3. I キーを押して、次のように入力します。
5 17 * * * cp ~/* /media/USB
4. Esc を押して、「:wq!」と入力します。
5. 次の 2 つのファイルを作成することで、cron ジョブの作成を許可するユーザーと許可しないユーザーを指定できます。
<オール>/etc/cron.allow ファイルが存在する場合、それが評価される唯一のファイルです。この状況では、/etc/cron.deny は無視されます。これらのファイルがどちらも存在しない場合、root ユーザーのみがユーザー cron ジョブを定義できます。