こんにちは、フルスタックエンジニアのryuです。
今回の記事では、crontabの設定方法について解説します。crontabとは、定期的にジョブを実行するためのものです。crontabに実行間隔や実行ユーザーを記述することで、定期的にジョブが実行されます。今回はcrontabの設定方法を詳しく解説します!
目次
crontabの設定方法を解説
crontabってどうやって使うの?
今回の記事では、crontabの使い方について解説します。
システム運用を行う際、バックアップやログファイルの削除など定期的にプログラムを実行させる必要があります。そのような場合、crontabに設定するだけで定期的にジョブを実行することができます。
今回は、crontabで定期的にジョブを実行させる方法を詳しく解説します。内容は以下の通りです。
- crontabファイルの設定
- crontabファイルの書き方
- ユーザーのcrontab
では、crontabの設定をしていきましょう!
crontabにジョブを設定する
まずはcrontabにジョブを設定します。vimを使用してcrontabを開きましょう。
vi /etc/crontab
crontabのファイルは以下のようになっています。実行時間と実行ユーザー、実行コマンドが設定されています。
# 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
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
ではcrontab、簡単な設定をしてみましょう。
1 * * * * root /usr/bin/echo "test"
これで1分毎にechoコマンドを実行するようになります。コマンドを指定する際は、絶対パスで指定するようにしましょう。コマンドの絶対パスを調べるためには、whichコマンドを使用しましょう。
which echo
whichコマンドの使い方はこちらの記事で詳しく解説しています。
【Linux】whichコマンドを使用してコマンドの絶対パスを表示する【オプションなども併せて解説】
crontabファイルの書き方
先ほど簡単なコマンドをcrontabに設定しました。crontabの書き方は以下の通りです。
分 時 日 月 曜日 ユーザー コマンド
crontabの各フィールドの設定値はこちらです。
分 | 0から59までの整数 |
時 | 0から23までの整数 |
日 | 1から31までの整数 |
月 | 1から12もしくは、jan~decまでの文字列 |
曜日 | 0から7まで(0、7→日曜日 6→土曜日) もしくはSun,Monの文字列 |
ユーザー | 実行するユーザー |
コマンド | 実行するコマンド |
時間ごとに実行されるcronファイル
先ほどは/etc/crontabファイルに実行時間を設定しましたが、時間ごとに実行されるディレクトリがあります。
それは、”/etc/cron.*”のディレクトリです。このディレクトリ内部にスクリプトを作成すると、時間ごとにスクリプトが実行されます。
/etc/cron.hourly/ | 1時間ごとに1度実行されるcronジョブを記述したファイルを収めたディレクトリ |
/etc/cron.daily/ | 一日ごとに1度実行されるcronジョブを記述したファイルを収めたディレクトリ |
/etc/cron.weekly/ | 1週間ごとに1度実行されるcronジョブを記述したファイルを収めたディレクトリ |
/etc/cron.montyly/ | 月に一度に1度実行されるcronジョブを記述したファイルを収めたディレクトリ |
すでにデフォルトでいくつかのスクリプトが、cronディレクトリ配下にあるので参考にしてください。
ユーザーのcrontabの設定方法
先ほど設定した”/etc/crontab”ファイルはシステムのジョブを実行させます。crontabには、システム用途は別にユーザー毎で設定することが可能です。
ユーザーのcrontabファイルを作成する
ユーザーのcrontabは直接編集するのではなく、crontabコマンドを使用します。まずは、crontabコマンドを使用して、ユーザーのcrontabを作成してみましょう。
login user //ユーザーでログイン
crontab -e
コマンドを実行すると、ファイルを編集するエディタを聞かれるので、どちらかを選択しましょう。オススメはvimです。

ファイルを以下のように編集します。書式は先ほどと同じですが、実行ユーザーを書く必要はありません。
1 * * * * /usr/bin/echo "test"
これで設定が完了です!
crontabコマンドのその他のオプション
設定したcrontabは”-l”オプションを使用すると、設定されているcronジョブを一覧表示できます。
crontab -l
→1 * * * * /usr/bin/echo "test"
“-r”オプションを使用すると、設定されている全てのcronジョブが削除されます。
crontab -r
crontabの設定方法まとめ
今回の記事では、crontabの設定方法を解説しました。まとめると以下のようになります。
- /etc/crontabファイルでコマンドと時刻を指定
- ユーザーのcrontabは”crontab -e”コマンドで編集
crontabはシステム運用をする人には必須の知識なので覚えておきましょう!
このようなインフラエンジニアに必要な知識を当ブログでは、紹介しているので興味のある方は是非ご覧ください。
さらにlinuxについて勉強したい方はこちらの参考書がオススメです。