cronとは、Linuxに標準で備わっているプログラムの一種で、設定すると処理を自動で定期的に実行することができます。
バックアップ処理やメンテナンスなど、定期的にプログラムを実行したい場合には、cronを使用すると便利です。
本記事ではcronの概要や、設定に必要なcrontabファイルについて解説します。
cronの使い方を覚えて、サーバーやシステムの管理に役立てましょう。
VPSならミライサーバー
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す
目次
cronやcrontabとは
本章では、cronやcrontabの概要を説明します。
cronとは
cronはLinuxに標準で備わっている「定期的に処理を自動で実行できるプログラム」です。
Windowsでは、同様のものに「ジョブスケジューラ」があります。
cron自体は「デーモン」として常時バックグラウンドで動いており、事前に設定されたタイミングで動作します。
Linuxサーバーを管理する上で、cronは欠かせません。
なぜなら、cronを利用することで以下のようなメリットがあるからです。
- 人の手を介さず、処理を自動実行できる
cronは処理(処理の単位)を自動実行することができます。
通常、処理を行うには手動でコマンドやプログラムを実行する必要がありますが、cronを使えば人の手を介する必要がありません。
そのため、深夜など人がいないタイミングで処理を実行することも可能です。
- 定期的に実行できる
決められた時間に処理を実行したいとき、毎回人が実行するのは面倒です。
実行することを忘れてしまうこともあるでしょう。
cronを使用すれば、設定されたタイミングで定期的に処理を実行できます。
たとえば、データのバックアップや、メールの定期配信、システムリソースの監視などに利用できます。
このように、人の手で実施する手間を省き、効率よくシステムを管理できます。
サーバーを管理する場合は、必ずcronの使い方を覚えておきましょう。
crontabとは
crontabは「何月何日何曜日何時何分に、どういう処理を行う」という指示が記載されたファイルのことです。
cronを実行するには、まずこのファイルに実行したいタイミングと処理を設定することから始まります。
cronデーモンはcrontabに記載された内容に基づいて、設定された処理を実行します。
cronの設定方法
cronを実行するための設定方法を見ていきましょう。
crontabの書き方と設定例
crontabファイルはユーザーごとに存在します。
ファイルを直接編集するのではなく、crontabコマンドをつかって編集します。
- crontabコマンドの書式
crontab [オプション]
- オプションの一覧
オプション | 内容 |
---|---|
-e | crontabファイルを編集する。 |
-l | crontabファイルの内容を表示する。 |
-r | crontabファイルを削除する。 |
-l ユーザー名 | 指定したユーザーのcrontabを設定する。 (rootユーザーのみ実行可能) |
たとえば、ログインしているユーザー自身のcrontabを設定したい場合は、以下のコマンドを実行します。
crontab -e
cronの設定方法
crontabファイル内で、実行したい時間とプログラムを設定しましょう。
crontabコマンドの書式はこうでしたね。
crontab [オプション]
設定方法は以下のとおりです。
- 設定項目
項目 | 内容 |
---|---|
minute | 分(0~59)を設定する。 ”*”を指定すると毎分 |
hour | 時(0~23)を設定する。 ”*”を指定すると毎時 |
day | 日(1~31)を設定する。 ”*”を指定すると毎日 |
month | 月(1~12、またはJan~Dec)を設定する。 ”*”を指定すると毎月 |
weekday | 曜日(0~6、またはSun~Sat)を設定する。 ”*”を指定すると毎日 |
user | 実行時のユーザーを指定する。 (rootユーザーのみ) |
command | 実行するコマンドを設定する。 |
たとえば、testユーザーのcrontabにて、毎週月曜日0時0分に「/home/test/example.sh」というプログラムを実行したい場合は、以下のように設定します。
設定した内容がわかりやすくなるように、「#」を先頭につけた注釈をつけておくとよいでしょう。
0 0 * * 1 /home/test/example.sh
時間設定は複雑な設定も可能です。
例えば、分のところで「*/5」と指定すれば、5分おきに処理を実行します。
「0-10」と設定すれば、0分から10分までの間、毎分処理を実行します。
また「火曜日と金曜日だけ」のように個別に指定した場合は、「2,5」のようにカンマ区切りで複数指定することで実現できます。
あまりに複雑すぎる設定をしてしまうと、他の人が見てわかりにくいものになったり、想定外のタイミングで実行されたりする場合もあるので、注意が必要です。
なお、設定した内容が重複しても、処理は1度しか実行されません。
例えば「毎週月曜日と毎月1日に処理を実行したい」と設定した場合、ある月の1日は月曜日であっても、処理は1回しか実行されません。
cronを設定する際の注意点
cronを設定すると、定期的にプログラムを実行してくれるので非常に便利ですが、何も考えずに際限なく設定してしまうと、サーバー運用に支障をきたします。
また、手動で実行した場合と結果が異なる場合もあります。
ここでは、cron設定時に注意すべき点を解説します。
複雑な設定はできない
cronが実行できることは「何月何日何曜日何時何分に、設定されている処理を行う」という点のみです。
場合によっては、複雑な処理フローを実行したいときもありますが、cronで実現するのは困難なものもあります。
たとえば「Aという処理が終わってから次にBという処理を開始する」という、処理の開始が時限式でないものは、cronでは実行できません。
cronができること、できないことを見定める必要があります。
処理実行時のサーバーのリソース状況を確認する
cronでは、同じタイミングに複数のプログラムを実行することができます。
しかし、大量のプログラムを短時間に詰め込みすぎると、CPUやメモリを消費してリソースが枯渇し、プログラムが正常に稼働できない状況に陥ります。
そのため、実行したい時間のリソース状況から、そのときにプログラムを実行しても問題ないかを確認したうえでcronの設定を行いましょう。
指定したプログラムが実行される状況を確認する
cronで処理を実行した場合、カレントディレクトリはそのユーザーのホームディレクトリです。
また、環境変数も最低限のものしか設定されません。
そのため「設定したのに処理が実行されない」「ファイルが存在しないというメッセージが出る」といった、手動実行では起こらないトラブルが発生する場合もあります。
cronで実行する場合は、必ず設定した時間に確実に処理が実行され、手動実行と同様の結果になるか、テストしておきましょう。
まとめ
今回はcronおよびその設定ファイルcrontabについて解説しました。
cronは、システムを運用する上で非常に便利なプログラムです。
毎日データのバックアップを実行する、決められた時間帯にバッチ処理を実行するなど、処理の定期実行ができます。
また、自動で実行できるため、深夜などに人間が作業する必要もありません。
ただし、プログラムを自動実行できるとはいえ、そのときのシステムの状況をきちんと把握しておかないと、トラブルの原因ともなりかねません。
処理のスケジュールを把握し、計画的に実行するように心がけましょう。
UnixやLinuxのVPSならミライサーバー
ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。
ミライサーバーのVPSでは、高速処理が可能なSSDを全プランに搭載しています。
OSは、UbuntuやDebian、AlmaLinuxなどの豊富なラインアップから選択できます。
2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。