【保存版】crontabの使い方|設定方法を解説!

【保存版】crontabの使い方|設定方法を解説!

記事の文字数:1880

Linuxで定期的なタスクを自動実行するために欠かせない「crontab」の使い方を解説します。基本構文から便利な特殊記法、設定方法、注意点まで詳しく解説し、crontabを用いてバックアップやログ整理などの業務を効率化する方法を紹介します。


スポンサーリンク

crontabは、LinuxやUnix系OSで定期的なタスクを自動実行するための機能です。特定のスケジュールに基づいてコマンドやスクリプトを実行できるため、バックアップ、ログの整理、データの同期などに活用されます。

crontabの使い方

基本構文

crontabの設定ファイルには、以下のようなフォーマットでジョブを記述します。

crontab基本構文
* * * * * コマンド

各フィールドの意味は左から以下の通りです。

フィールド値の範囲説明
0 - 59実行する分
0 - 23実行する時間
1 - 31実行する日
1 - 12実行する月
曜日0 - 7実行する曜日(0と7は日曜日、1から順番に月・火・水・木・金・土)
分 時 日 月 曜日 コマンド

たとえば、毎日午前3時にbackup.shを実行する場合、以下のように記述します。

crontab設定例
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

デフォルトのエディタ(vimnanoなど)が開き、ジョブを追加・削除できます。

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が出力されない場合は、以下設定を確認してください。

Terminal window
vi /etc/rsyslog.conf

cront.*がコメントアウトされていたら、コメントを外します。

変更前
Terminal window
#cron.* /var/log/cron.log
変更後
Terminal window
cron.* /var/log/cron.log

rsyslogのサービスを再起動することでcron実行時に/var/log/cron.logが出力されるようになります。

Terminal window
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ライフを!
スポンサーリンク
Scroll to Top