【Linux】ジョブスケジューリング
Linuxサーバーの管理では、プログラムを定期的に実行したい場合があります。例えば、バックグラウンドで実行する定型業務、バックアップ、ログファイルの管理などです。定期的に発生する作業を自動化することで、運用コストを下げることができます。そのような時に便利なのが、「cron」という機能です。
項目 | 説明 |
---|---|
定期的なタスクの自動化 | バックグラウンドでの定型業務やバックアップ、ログファイルの管理を自動化する。 |
運用コストの削減 | 自動化によって手動の介入を減らし、システム運用の効率化を図る。 |
cronとは
Cronは、「クーロン(またはクロン)」と読み、UnixおよびLinux系オペレーティングシステムで使用される、自動的にタスクを実行するためのスケジューラーです。Cronは定期的にジョブを実行する機能の名称で、1分おきにcrontabファイルを確認し、実行すべきジョブがあれば実行します。
項目 | 説明 |
---|---|
Cronの読み方 | 「クーロン(またはクロン)」 |
定期実行の頻度 | 1分おきにcrontabファイルを確認 |
構成要素 | スケジュール管理をするデーモンのcrond とジョブのスケジュールを記述するcrontab ファイル |
crontabファイルの種類 | ユーザーのcrontabファイルとシステムのcrontabファイル |
ユーザーのcrontabファイル
ユーザーのcrontabファイルには、そのユーザー専用のジョブスケジュールが記述されます。ユーザーは以下のコマンドを使用して、自分のcrontabファイルを編集できます。
【コマンド】
crontabファイルをエディタで開いて編集することができます。
crontab -e
【構文】
* * * * * command
フィールド | 意味 | 値の範囲 |
---|---|---|
分 | 実行する分 | 0-59 |
時 | 実行する時間 | 0-23 |
日 | 実行する日 | 1-31 |
月 | 実行する月 | 1-12 または Jan-Dec |
曜日 | 実行する曜日 | 0-7 または Sun-Sat |
command | 実行するコマンド | 任意のコマンドやシェルスクリプト |
【例】
毎日午前2時にバックアップスクリプトを実行する
0 2 * * * /path/to/backup.sh
システムのcrontabファイル
システムのcrontabファイルには、システム全体で必要なジョブスケジュールが記述されます。このファイルは通常、システム管理者によって管理されます。
【ファイルパス】
/etc/crontab
【システムのcrontabファイルの内容】
user01@ubuntu-vm:~$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
# You can also override PATH, but by default, newer versions inherit it from the environment
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
(省略)
【例】
システム全体で毎日深夜にログのローテーションを実行する。
0 2 * * * /path/to/backup.sh
まとめ
Cronは、Linuxサーバーにおける定期的なタスクの自動化に非常に有用なツールです。ユーザーおよびシステムのcrontabファイルを利用して、様々なジョブをスケジュールできます。これにより、システムの効率的な運用と管理が可能となり、運用コストの削減にも寄与します。
項目 | 説明 |
---|---|
ジョブスケジューリング | 定期的なタスクを自動実行するための技術。 |
cron | タスクを定期的に実行するためのスケジューラー。 |
crond | スケジュールされたジョブを実行するデーモンプロセス。 |
crontab | ジョブのスケジュールを記述するファイル。ユーザーごとに個別のファイルと、システム全体のファイルがある。 |
ユーザーのcrontabファイル | 特定のユーザーが所有するジョブスケジュール。 |
システムのcrontabファイル | システム全体で必要なジョブスケジュール。 |
Cronを活用することで、手動で行う必要のある定期的な作業を自動化し、システム管理をより効率的に行うことができます。