【Linux】ジョブスケジューリング

 Linuxサーバーの管理では、プログラムを定期的に実行したい場合があります。例えば、バックグラウンドで実行する定型業務、バックアップ、ログファイルの管理などです。定期的に発生する作業を自動化することで、運用コストを下げることができます。そのような時に便利なのが、「cron」という機能です。

項目説明
定期的なタスクの自動化バックグラウンドでの定型業務やバックアップ、ログファイルの管理を自動化する。
運用コストの削減自動化によって手動の介入を減らし、システム運用の効率化を図る。
ジョブスケジューリング

cronとは

 Cronは、「クーロン(またはクロン)」と読み、UnixおよびLinux系オペレーティングシステムで使用される、自動的にタスクを実行するためのスケジューラーです。Cronは定期的にジョブを実行する機能の名称で、1分おきにcrontabファイルを確認し、実行すべきジョブがあれば実行します。

項目説明
Cronの読み方「クーロン(またはクロン)」
定期実行の頻度1分おきにcrontabファイルを確認
構成要素スケジュール管理をするデーモンのcrondとジョブのスケジュールを記述するcrontabファイル
crontabファイルの種類ユーザーのcrontabファイルとシステムのcrontabファイル
cronの特徴

ユーザーのcrontabファイル

 ユーザーのcrontabファイルには、そのユーザー専用のジョブスケジュールが記述されます。ユーザーは以下のコマンドを使用して、自分のcrontabファイルを編集できます。

【コマンド】
crontabファイルをエディタで開いて編集することができます。

crontab -e

【構文】

* * * * * command
フィールド意味値の範囲
実行する分0-59
実行する時間0-23
実行する日1-31
実行する月1-12 または Jan-Dec
曜日実行する曜日0-7 または Sun-Sat
command実行するコマンド任意のコマンドやシェルスクリプト
crontabファイルのフィールド

【例】
毎日午前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を活用することで、手動で行う必要のある定期的な作業を自動化し、システム管理をより効率的に行うことができます。