logo

Linux の「crontab」と例

クロンタブ は、定期的なスケジュールで実行するコマンドのリストと、そのリストの管理に使用するコマンドの名前です。 Crontab は、ジョブ スケジューラ cron を使用してタスクを実行するため、cron テーブルの略です。 クロン それ自体は、ギリシャ語で時間を意味するクロノスにちなんで名付けられました。 cron は、設定されたスケジュールに従ってタスクを自動的に実行するシステム プロセスです。スケジュールは crontab と呼ばれ、スケジュールの編集に使用されるプログラムの名前でもあります。

Linux の Crontab 構文

Linux Crontab 形式は次の構文で表されます。



MIN HOUR DOM MON DOW   CMD>

各フィールドを詳しく見てみましょう。

分野

説明



許可される値

MIN(分)

コマンドを実行する時間を指定します



範囲は 0 ~ 59 です。

時間

コマンドの実行がスケジュールされている時刻を示します。

0 から 23 までの範囲です。

DOM (月の日)

タスクの日付を指定します。

範囲は 1 ~ 31 です。

MON(月)

コマンドが実行される月を示します。

1から12まで変化します。

DOW (曜日)

タスクの曜日を指定します。

これは 0 から 6 までの数字で表され、0 と 6 は両方とも日曜日に対応します。

CMD(コマンド)

スケジュールされた時刻に実行される実際のコマンドまたはスクリプトを表します。

—————–

Cron ジョブの例

1. 特定の時間にジョブをスケジュールする

cron の基本的な使い方は、以下のように指定した時間にジョブを実行することです。これにより、フル バックアップ シェル スクリプト (フルバックアップ) が 6 月 10 日午前 8 時 30 分に実行されます。時間フィールドは 24 時間形式を使用します。したがって、午前 8 時の場合は 8 を使用し、午後 8 時の場合は 20 を使用します。

30 08 10 06 * /home/maverick/full-backup>

30 – 30 分 08 – 08 AM 10 – 10 日 06 – 6 月 (6 月) * – すべての曜日

2. Crontab エントリを表示するには

  • 現在ログインしているユーザーの Crontab エントリを表示する : crontab エントリを表示するには、UNIX アカウントから crontab -l と入力します。
  • ルート Crontab エントリの表示: root ユーザー (su – root) としてログインし、crontab -l を実行します。
  • 他の Linux ユーザーの crontab エントリを表示するには: root にログインし、-u {username} -l を使用します。

3. Crontab エントリを編集するには 現在ログインしているユーザーの Crontab エントリを編集します。

crontab エントリを編集するには、crontab -e を使用します。デフォルトでは、これにより現在ログインしているユーザーの crontab が編集されます。

4. Cron を使用して、毎分ジョブをスケジュールします。

理想的には、ジョブを毎分スケジュールする必要がないかもしれません。ただし、この例を理解することは、他の例を理解するのに役立ちます。

* * * * * CMD>

* は、考えられるすべての単位、つまり、年間を通じて毎時、毎分を意味します。この * を直接使用するよりも、次のような場合に非常に便利です。分フィールドに */5 を指定すると、5 分ごとを意味します。分フィールドに 0-10/2 を指定すると、最初の 10 分間は 2 分ごとになります。したがって、上記の規則は他の 4 つのフィールドすべてに使用できます。

5. ジョブを複数回スケジュールするには (例: 1 日 2 回)

次のスクリプトは、毎日 1 日 2 回増分バックアップを取得します。この例では、指定された増分バックアップ シェル スクリプト (incremental-backup) を毎日 11:00 と 16:00 に実行します。フィールド内のカンマ区切りの値は、指定された時間内にコマンドを実行する必要があることを指定します。

00 11, 16 * * * /home/maverick/bin/incremental-backup>

00 – 0 分 (時間の先頭) 11、16 – 午前 11 時および午後 4 時 * – 毎日 * – 毎月 * – 毎日

6. 特定の時間範囲でジョブをスケジュールする (例: 平日のみ)

特定の時間範囲内で 1 時間ごとにジョブをスケジュールしたい場合は、以下を使用します。

  • 勤務時間中毎日 Cron ジョブ : この例では、勤務時間中、毎日 (週末を含む) 午前 9 時から午後 6 時までデータベースのステータスをチェックします。
00 09-18 * * * /home/maverick/bin/check-db-status>
  • 00 – 0 分 (時間の先頭) 09-18 – 午前 9 時、午前 10 時、午前 11 時、午前 12 時、午後 1 時、午後 2 時、午後 3 時、午後 4 時、午後 5 時、午後 6 時 * – 毎日 * – 毎日月 * – 毎日
  • Cron Job each day while working hours : この例では、平日の毎日 (つまり、土曜日と日曜日を除く) 午前 9 時から午後 6 時までの勤務時間中にデータベースのステータスをチェックします。
00 09-18 * * 1-5 /home/maverick/bin/check-db-status>
  • 00 – 0 分 (時間の先頭) 09-18 – 午前 9 時、午前 10 時、午前 11 時、午前 12 時、午後 1 時、午後 2 時、午後 3 時、午後 4 時、午後 5 時、午後 6 時 * – 毎日 * – 毎日月 1 ~ 5 - 月、火、水、木、金 (毎週平日)

7. バックグラウンド Cron ジョブを 10 分ごとにスケジュールします。

10分ごとにディスク容量を確認したい場合は、以下を使用します。

Java文字列をJSONに変換
*/10 * * * * /home/maverick/check-disk-space>

年間を通して、指定されたコマンド check-disk-space を 10 分ごとに実行します。ただし、特定の時間帯にのみコマンドを実行する必要がある場合や、その逆の場合もあります。上記の例は、これらのことを行う方法を示しています。5 つのフィールドに値を指定する代わりに、以下に示すように 1 つのキーワードを使用して値を指定できます。上記の 5 つのフィールドの代わりに、@ の後にキーワードを続けて使用できる特殊なケースがあります (再起動、午前 0 時、毎年、毎時など)。 Cron の特別なキーワードとその意味

Keyword Equivalent @yearly 0 0 1 1 * @daily 0 0 * * * @hourly 0 * * * * @reboot Run at startup.>

8. @yearly を使用して毎年最初の 1 分にジョブをスケジュールするには

ジョブを毎年最初の 1 分に実行したい場合は、以下に示すように @yearly cron キーワードを使用できます。これにより、年次メンテナンス シェル スクリプトを使用してシステムの年次メンテナンスが 1 月 1 日の 00:00 に実行されます。毎年。

@yearly /home/maverick/bin/annual-maintenance>

9. @monthly を使用して毎月初めに Cron ジョブをスケジュールするには

これは、上記の @yearly と同様です。ただし、@monthly cron キーワードを使用してコマンドを毎月 1 回実行します。これにより、毎月 1 日の 00:00 にシェル スクリプトのテープ バックアップが実行されます。

@monthly /home/maverick/bin/tape-backup>

10. @daily を使用してバックグラウンド ジョブを毎日スケジュールするには

@daily cron キーワードを使用すると、毎日 00:00 に cleanup-logs シェル スクリプトを使用してログ ファイルのクリーンアップが実行されます。

@daily /home/maverick/bin/cleanup-logs 'day started'>

11. @reboot を使用して再起動するたびに Linux コマンドを実行するには

@reboot cron キーワードを使用すると、毎回マシンの起動後に指定されたコマンドが 1 回実行されます。

@reboot CMD>