Linuxの運用や保守をしていると、よく出てくるのが cron(クーロン) です。
最初は「なんとなく定期実行する仕組みらしい」くらいの理解だったのですが、実際に触ってみると、毎日決まった時間に処理を動かしたいときにかなり便利でした。
この記事では、IT初心者向けに cronとは何か、どんなときに使うのか、設定の見方 をざっくり整理します。
cronとは?
cronは、Linuxでコマンドやスクリプトを定期的に自動実行する仕組みです。
たとえば、こんな処理を自動化できます。
- 毎日深夜にバッチ処理を動かす
- 1時間ごとにログを集計する
- 毎週決まった曜日にバックアップを取る
- 10分おきに監視用スクリプトを実行する
要するに、「人が毎回手でやらなくていいようにする仕組み」 です。
どんなときに使うのか
自分がイメージしやすかったのは、次のようなケースです。
1. バッチ処理の定期実行
売上集計やデータ連携など、毎日同じ時間に実行したい処理を自動化できます。
2. ログのチェックや削除
定期的にログを確認したり、古いログを削除したりする処理を仕込めます。
3. 監視や通知
監視スクリプトを定期実行して、異常があれば通知することもできます。
4. バックアップ
データベースやファイルのバックアップを夜間に自動実行する、といった使い方もあります。
cronの設定はどこに書くのか
cronの設定は、crontab という設定ファイルのようなものに書きます。
よく使うコマンドはこれです。
現在の設定を確認
crontab -l
設定を編集
crontab -e
-l は list、-e は edit と覚えるとわかりやすいです。
cronの基本的な書き方
cronの設定は、基本的に次の形です。
分 時 日 月 曜日 実行したいコマンド
たとえば、
0 2 * * * /home/user/sample.sh
と書くと、毎日2:00に /home/user/sample.sh を実行する という意味になります。
各項目の意味
cronは5つの時間指定と、最後に実行コマンドを書きます。
| 項目 | 意味 |
|---|---|
| 分 | 0〜59 |
| 時 | 0〜23 |
| 日 | 1〜31 |
| 月 | 1〜12 |
| 曜日 | 0〜7(0と7は日曜日扱いが多い) |
最初は覚えづらいですが、左から「分・時・日・月・曜日」 です。
* は何を意味するのか
cronでよく出てくる * は、すべて という意味です。
たとえば、
0 * * * *
なら、毎時0分 に実行です。
*/10 * * * *
なら、10分おき に実行です。
この */10 みたいな書き方は、現場でもよく見ます。
よくある設定例
毎日3:00に実行
0 3 * * * /home/user/daily.sh
10分おきに実行
*/10 * * * * /home/user/check.sh
毎週月曜日の9:00に実行
0 9 * * 1 /home/user/weekly.sh
毎月1日の0:00に実行
0 0 1 * * /home/user/monthly.sh
初心者が混乱しやすいポイント
1. 書いたのに動かない
これはかなりあります。原因としては、たとえば次のようなものがあります。
- スクリプトに実行権限がない
- パスの指定が間違っている
- cronで使える環境変数が少ない
- コマンドを省略して書いている
cronは、普段自分がターミナルで動かしているときと同じ環境ではないことがあります。
そのため、コマンドやファイルはフルパスで書く のが安全です。
例:
/bin/bash /home/user/sample.sh
2. 実行結果が見えにくい
cronは裏で動くので、失敗していても気づきにくいです。
そのため、最初はログを出すようにしておくと安心です。
0 2 * * * /home/user/sample.sh >> /home/user/sample.log 2>&1
これは、標準出力もエラー出力もログファイルに書く設定です。
3. 時間の見方を間違える
たとえば、
*/10 * * * *
は「10分おき」です。
でも、
10 * * * *
は「毎時10分」です。
似ているので、最初はかなり間違えやすいと感じました。
cronとcrontabの違い
最初はここも少し混乱しました。
-
cron
定期実行そのものの仕組み -
crontab
cronに登録する設定を書くためのもの
つまり、cronが仕組み本体で、crontabが設定を書く場所 というイメージです。
自分なりの理解
自分は最初、cronを
「Linux版の定期実行タイマー」
みたいなものだと理解するとわかりやすかったです。
- いつ実行するかを決める
- 何を実行するかを書く
- あとは自動で動く
仕組みとしてはシンプルですが、運用や保守の現場ではかなり重要です。
まず初心者が覚えるとよさそうなこと
最初は全部覚えようとしなくても、次の3つを押さえるだけでかなり楽になります。
-
crontab -lで設定確認 -
crontab -eで編集 -
分 時 日 月 曜日 コマンドの形を覚える
あとは、よく使う例を見ながら少しずつ慣れるのがよさそうです。
まとめ
cronは、Linuxで処理を定期実行するための仕組みです。
毎回手で実行しなくてよいので、バッチ処理やログ管理、監視、バックアップなどでよく使われます。
初心者のうちは難しく見えますが、まずは以下を押さえれば十分だと思います。
- cronは定期実行の仕組み
- 設定は crontab に書く
- 書式は
分 時 日 月 曜日 コマンド -
*は「すべて」 - まずはログ出力付きで試すと安心
これからcronを触る人の参考になればうれしいです。