Cronとは
Cronは、LinuxやmacOSなどのUnixベースのシステムで利用可能な柔軟なスケジュールユーティリティであり、指定された間隔でコマンドやスクリプトを実行することにより、システム管理者、開発者、そして一般ユーザーにとって欠かせないツールとなっています。
Cronは、システムメンテナンス、データバックアップ、レポート生成などの繰り返しタスクを自動化するために設計されています。特に、リソースの多い操作を管理するために役立ちます。これらは、システム使用率が低い期間にスケジュールを設定することができます。Cronを習得することで、ユーザーは自分のワークフローを最適化し、システム全体の効率を改善することができます。
Cron構文と構成要素
Cronジョブには、Cron式とコマンドの2つの主要な要素が含まれています。
Cron式
Cron式は、タスクのスケジュールを定義する一連のフィールドです。式は5つのフィールドで構成され、各々が特定の時間単位を表します。
- 分(0-59)
- 時(0-23)
- 月の日(1-31)
- 月(1-12)
- 曜日(0-7;0と7は日曜日を表す)
各フィールドはスペースで区切られ、次のシンボルを使用してスケジュールを定義できます。
- アスタリスク(
*
): フィールドの全ての可能な値(例えば、毎分または毎日) - コンマ(
,
): フィールドの複数の値を指定(例えば、「1,15」は月の1日と15日を表す) - ハイフン(
-
): フィールドの値の範囲を示す(例えば、「1-5」は月曜日から金曜日を表す) - スラッシュ(
/
): ステップ値を定義し、頻度を表す。アスタリスクと一緒に使用され、間隔を表す(例えば、時間のフィールドでの */2は2時間ごとを表す)。
Cron式の例
Cron式を作成する方法を理解するために、実際のCron式の実例をいくつか紹介します。
- コマンドを毎分実行
* * * * * /path/to/command
- スクリプトを5分ごとに実行
*/5 * * * * /path/to/script.sh
- タスクを毎日午前3時30分に実行
30 3 * * * /path/to/task
- ジョブを毎週月曜日の午後6時に実行
0 18 * * 1 /path/to/job
- バックアップスクリプトを毎月1日と15日の午前0時に実行
0 0 1,15 * * /path/to/backup.sh
- 平日の午前9時から午後5時まで、1時間ごとにタスクを実行
0 9-17 * * 1-5 /path/to/task
- 平日(月曜日から金曜日)の営業時間(午前9時から午後6時)ごとに、30分ごとにレポートスクリプトを実行
*/30 9-18 * * 1-5 /path/to/report.sh
- 毎月の最終日の午後11時45分にクリーンアップスクリプトを実行
45 23 * * * [ "$(date +'\%m')" != "$(date +'\%m' -d tomorrow)" ] && /path/to/cleanup.sh
- 1週間目の平日中、10分ごとにタスクを実行
*/10 * 1-7 * 1-5 /path/to/task
Cronコマンド
コマンドは、Cronによって実行されるタスクです。簡単なシェルコマンド、スクリプト、またはセミコロンで区切られた一連のコマンドである場合があります。
Crontabファイルの設定と管理
Crontabは、「Cron table」の略で、特定のユーザーのCronジョブのリストを含むファイルです。それぞれのユーザーは、個人用のcrontabファイルを持つことができます。
Crontabの作成
crontabファイルを作成または編集するには、次のコマンドを使用します。
$ crontab -e
これにより、デフォルトのテキストエディタでcrontabファイルが開きます。別のエディタを使用する場合は、環境変数VISUAL
またはEDITOR
を設定してください。
Crontabの編集
crontabファイル内に、Cron式に続いてコマンドを記述した行を追加します。
30 2 * * 1 /home/user/backup.sh
このジョブは、毎週月曜日の午前2時30分にbackup.sh
スクリプトを実行します。エディタを保存して終了すると、crontabがインストールされます。
Crontabのリスト表示と削除
自分のcrontabの内容を表示するには、次のコマンドを使用します。
$ crontab -l
自分のcrontabを完全に削除するには、-rオプションを使用してください。
$ crontab -r
参考