Linux

【Linux】crontabの設定方法を解説!定期的にジョブを実行させる方法とは?

こんにちは、フルスタックエンジニアの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です。

crontabファイルの作成

ファイルを以下のように編集します。書式は先ほどと同じですが、実行ユーザーを書く必要はありません。

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について勉強したい方はこちらの参考書がオススメです。

About me
大手メーカのIT部門→上場ベンチャーでフルスタックエンジニアやってます。エンジニア歴は8年目。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!
年収をアップさせたいエンジニア必見!

レバテックキャリアは、高い専門性を持つアドバイザーが5000件以上のハイクラス求人の中から理想の求人をご提案します。年収600万円以上のハイクラス求人が多数!!!

PayPay、Sansan、SmartHR、ディー・エヌ・エー、LINE、freee、アクセンチュア、PwC、デロイトトーマツ、NTTデータ、SCSK、IIJなど大手IT企業からWeb系企業、スタートアップまでを幅広く網羅

キャリアップしたい方、年収をアップさせたい方などにおすすめです。

ハイクラス求人を見てみる

RELATED POST