「毎日決まった時間にバックアップを取りたい」「定期的にログを削除したい」
こんな定期的な作業を手動でやるのは面倒ですよね。Linuxには、指定した時間に自動でコマンドを実行してくれる仕組みがあります。それがcron(クロン)です。
この記事では、cronの基本的な使い方を初心者向けに解説します。
cronとは?
「時間になったら自動で実行してくれる」仕組み
cronは、Linuxに標準で搭載されているジョブスケジューラーです。「毎日深夜3時にバックアップを取る」「毎週月曜日にレポートを生成する」といった定期的なタスクを自動実行できます。
cronで何ができる?
- 定期的なバックアップの実行
- ログファイルの定期削除・ローテーション
- データベースのメンテナンス処理
- 監視スクリプトの定期実行
- レポートの自動生成・送信
インフラエンジニアの業務では、cronを使った自動化は日常的に行われています。
crontabとは?
cronの設定を行うファイルをcrontab(クロンタブ)と呼びます。「cron table」の略です。
crontabの基本コマンド
| コマンド | 説明 |
|---|---|
| crontab -e | crontabを編集する |
| crontab -l | 現在の設定を表示する |
| crontab -r | crontabを削除する(注意!) |
注意:crontab -rは確認なしで全設定が消えてしまうので、慎重に!
crontabの書き方
crontabの書式を見てみましょう。
基本の書式
分 時 日 月 曜日 コマンド
5つの時間指定フィールドと、実行するコマンドで構成されます。
各フィールドの意味
| フィールド | 指定できる値 | 説明 |
|---|---|---|
| 分 | 0-59 | 何分に実行するか |
| 時 | 0-23 | 何時に実行するか |
| 日 | 1-31 | 何日に実行するか |
| 月 | 1-12 | 何月に実行するか |
| 曜日 | 0-7 | 何曜日に実行するか(0と7は日曜日) |
特殊な指定方法
| 記号 | 意味 | 例 |
|---|---|---|
| * | 全ての値 | 毎分、毎時など |
| , | 複数の値を指定 | 1,15(1日と15日) |
| – | 範囲を指定 | 1-5(月曜〜金曜) |
| / | 間隔を指定 | */5(5分ごと) |
具体的な設定例
実際の設定例を見てみましょう。
毎日深夜3時に実行
0 3 * * * /home/user/backup.sh
「0分、3時、毎日、毎月、毎曜日」に backup.sh を実行します。
毎時0分に実行(1時間ごと)
0 * * * * /home/user/check.sh
5分ごとに実行
*/5 * * * * /home/user/monitor.sh
平日の9時に実行
0 9 * * 1-5 /home/user/report.sh
曜日の「1-5」は月曜日から金曜日を意味します。
毎月1日の深夜0時に実行
0 0 1 * * /home/user/monthly.sh
毎週日曜日の深夜2時に実行
0 2 * * 0 /home/user/weekly.sh
crontab設定の流れ
実際にcrontabを設定してみましょう。
Step1:crontabを編集
crontab -e
初めて実行すると、エディタの選択を求められることがあります。
Step2:設定を追加
エディタが開いたら、設定を追加します。
# 毎日3時にバックアップを実行
0 3 * * * /home/user/backup.sh
#で始まる行はコメントです。何の設定かメモしておくと便利です。
Step3:保存して終了
エディタを保存して終了すると、設定が反映されます。
Step4:設定を確認
crontab -l
追加した設定が表示されればOKです。
cronのログ確認
cronが正しく動いているか確認するには、ログを見ます。
# CentOS/RHEL系
cat /var/log/cron
# Ubuntu/Debian系
cat /var/log/syslog | grep cron
cronを使うときの注意点
1. フルパスを使う
cronは環境変数が制限されているため、コマンドやスクリプトはフルパスで指定しましょう。
# 良い例
0 3 * * * /usr/bin/python3 /home/user/script.py
# 悪い例(動かない可能性あり)
0 3 * * * python3 script.py
2. 出力をリダイレクトする
cronの出力を捨てるか、ファイルに保存しましょう。
# 出力を捨てる
0 3 * * * /home/user/backup.sh > /dev/null 2>&1
# ログファイルに保存
0 3 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
3. 実行権限を確認
スクリプトに実行権限がないと動きません。
chmod +x /home/user/backup.sh
4. テスト実行する
crontabに登録する前に、コマンドを手動で実行してエラーがないか確認しましょう。
まとめ
この記事のポイントを整理します。
| 項目 | 内容 |
|---|---|
| cronとは | Linuxの定期実行スケジューラー |
| crontabの書式 | 分 時 日 月 曜日 コマンド |
| 基本コマンド | crontab -e(編集)、crontab -l(表示) |
| 注意点 | フルパス使用、出力のリダイレクト、実行権限 |
cronは、インフラ運用の自動化に欠かせないツールです。バックアップやログ削除など、定期的な作業は積極的にcronで自動化しましょう。
最初はシンプルな設定から始めて、徐々に慣れていってください!