
スポンサーリンク
crontab
は、LinuxやUnix系OSで定期的なタスクを自動実行するための機能です。特定のスケジュールに基づいてコマンドやスクリプトを実行できるため、バックアップ、ログの整理、データの同期などに活用されます。
crontabの使い方
基本構文
crontab
の設定ファイルには、以下のようなフォーマットでジョブを記述します。
* * * * * コマンド
各フィールドの意味は左から以下の通りです。
フィールド | 値の範囲 | 説明 |
---|---|---|
分 | 0 - 59 | 実行する分 |
時 | 0 - 23 | 実行する時間 |
日 | 1 - 31 | 実行する日 |
月 | 1 - 12 | 実行する月 |
曜日 | 0 - 7 | 実行する曜日(0と7は日曜日、1から順番に月・火・水・木・金・土) |
分 時 日 月 曜日 コマンド
たとえば、毎日午前3時にbackup.sh
を実行する場合、以下のように記述します。
0 3 * * * /path/to/backup.sh
複数の値を設定する
crontab
では、各フィールドに複数の値を指定することができます。以下の方法を活用すると、柔軟なスケジュール設定が可能です。
1. 複数の値をカンマ(,)で指定
指定したすべての時間にジョブを実行したい場合は、カンマ(,)で区切ります。
0 3,6,9 * * * /path/to/script.sh
この設定では、毎日3時、6時、9時にスクリプトが実行されます。
2. 範囲指定(ハイフン -)
特定の範囲内のすべての値に対してジョブを実行したい場合は、ハイフン(-)を使用します。
0 5-10 * * * /path/to/script.sh
この設定では、毎日5時から10時までの毎時0分にスクリプトが実行されます。
3. ステップ(スラッシュ /)
一定間隔でジョブを実行したい場合は、スラッシュ(/)を使用します。
*/15 * * * * /path/to/script.sh
この設定では、15分ごとにスクリプトが実行されます(例:0分、15分、30分、45分)。
また、特定の範囲内でステップを使うことも可能です。
0 9-18/2 * * * /path/to/script.sh
この設定では、9時から18時までの間、2時間ごとにスクリプトが実行されます(9時、11時、13時、15時、17時)。
crontabの操作方法
cronの編集
crontab
の設定を編集するには、以下のコマンドを実行します。
crontab -e
デフォルトのエディタ(vim
やnano
など)が開き、ジョブを追加・削除できます。
cronの設定確認
登録されているジョブを確認するには、以下のコマンドを使用します。
crontab -l
cronの設定削除
すべてのジョブを削除する場合は、次のコマンドを実行します。
crontab -r
crontabの特殊な記述方法
crontab
には、よく使われるスケジュールを簡潔に指定するための特殊表記があります。
記述方法 | 意味 |
---|---|
@reboot | システム起動時に実行 |
@yearly | 毎年1月1日の0:00に実行(0 0 1 1 * と同等) |
@monthly | 毎月1日の0:00に実行(0 0 1 * * と同等) |
@weekly | 毎週日曜日の0:00に実行(0 0 * * 0 と同等) |
@daily | 毎日0:00に実行(0 0 * * * と同等) |
@hourly | 毎時0分に実行(0 * * * * と同等) |
たとえば、サーバーが起動するたびにスクリプトを実行する場合、以下のように記述します。
@reboot /path/to/script.sh
crontabの注意点
1. 環境変数の設定
crontab
では通常のシェル環境と異なるため、フルパスでコマンドを記述するか、スクリプト内で環境変数を明示的に設定する必要があります。
2. ログの確認
cron
ジョブの実行結果を確認するには、/var/log/cron.log
をチェックするか、出力をログファイルにリダイレクトしましょう。
cronログの補足
cron.logが出力されない場合は、以下設定を確認してください。
vi /etc/rsyslog.conf
cront.*がコメントアウトされていたら、コメントを外します。
変更前
#cron.* /var/log/cron.log
変更後
cron.* /var/log/cron.log
rsyslogのサービスを再起動することでcron実行時に/var/log/cron.log
が出力されるようになります。
systemctl restart rsyslog
出力をログファイルにリダイレクトする場合、以下のように指定することでログ出力が可能です。
0 3 * * * /path/to/script.sh >> /path/to/logfile.log 2>&1
3. crondの有効化
cron
が動作していないとジョブが実行されません。以下のコマンドでサービスの状態を確認し、有効化できます。
systemctl status cron # Ubuntu/Debian系systemctl status crond # CentOS/RHEL系
必要に応じて、以下のコマンドで起動できます。
sudo systemctl start cron # Ubuntu/Debian系sudo systemctl start crond # CentOS/RHEL系
まとめ
crontab
は、Linuxで定期的なタスクを実行するための便利なツールです。基本的な構文や特殊表記、運用時の注意点を理解して、効率的に活用しましょう。
以上で本記事の解説を終わります。
よいITライフを!