Linuxサーバーを使ったシステム運用では、「毎日ログを削除する」「バックアップを取る」などの定期処理の自動化は欠かせません。
その中心的な役割を担うのが、cron(クロン)というジョブスケジューラです。
本記事では、cronの仕組み、書き方、実行の仕組み、運用上の注意点、トラブル対処法まで、実務で本当に使えるレベルで解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
■ cronとは?
cronは、LinuxやUNIXで利用できるジョブスケジューラ(定期実行の仕組み)です。
指定した日時・間隔でコマンドやスクリプトを自動実行できます。
例:OracleのRMANバックアップを毎晩2時に自動実行するなど
■ cronの基本構成(図解)
[ crontabファイル ]
↓(1分ごとに確認)
[ cronデーモン(crond) ]
↓
[ コマンドやスクリプトが自動で実行される ]
各ユーザーごとに crontab を持つことができ、実行単位も個別管理されます。
■ cronの基本書式(6つのフィールド)
分 時 日 月 曜日 コマンド
| フィールド | 意味 | 例 | 説明 |
|---|---|---|---|
| 分 | 0〜59 | 0 | 00分に |
| 時 | 0〜23 | 2 | 午前2時に |
| 日 | 1〜31 | * | 毎日 |
| 月 | 1〜12 | * | 毎月 |
| 曜日 | 0〜7(0=日曜) | 0 | 日曜に |
| コマンド | 実行したい内容 | backup.sh | 任意のシェルやコマンドを実行 |
*は「すべて」を意味します。たとえば「毎日」「毎時間」など。
■ よく使うcronの書き方(パターン集)
| cron設定 | 実行タイミング |
|---|---|
0 2 * * * | 毎日 午前2時に実行 |
0 3 * * 0 | 毎週日曜日 午前3時に実行 |
*/15 * * * * | 15分ごとに実行 |
0 1 * * 1-5 | 月〜金の午前1時に実行 |
0 0 1 * * | 毎月1日 午前0時に実行 |
■ cronの設定手順(crontab)
crontabの操作コマンド
| コマンド | 内容 |
|---|---|
crontab -e | crontabを編集する |
crontab -l | 現在の設定を一覧表示する |
crontab -r | 設定をすべて削除する |
例:RMANバックアップの自動実行設定
crontab -e
# 毎週日曜2:00にレベル0バックアップ
0 2 * * 0 /home/oracle/scripts/backup_level0.sh
# 月〜土曜2:00にレベル1バックアップ
0 2 * * 1-6 /home/oracle/scripts/backup_level1.sh
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
■ cronと環境変数の注意点(重要)
cronで実行されるスクリプトは、通常のログインシェルと違って環境変数が不足しています。
たとえば以下のような変数は、スクリプト内で明示的に設定してください:
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
また、cronで直接コマンドを記述する際はフルパス指定が安全です:
0 2 * * * /home/oracle/scripts/backup.sh >> /home/oracle/scripts/log/backup.log 2>&1
■ ログ出力のベストプラクティス
>> /path/to/logfile.log 2>&1
| 記号 | 説明 |
|---|---|
>> | 標準出力を追記モードでログに記録 |
2>&1 | 標準エラー出力も標準出力に統合 |
これにより、実行結果やエラーを後から確認可能になります。
■ よくあるエラーと原因・対処
| 症状 | 原因 | 対処方法 |
|---|---|---|
| スクリプトが実行されない | 環境変数未設定、権限不足など | export 追加、chmod +x を確認 |
| ログが空 | >> log 2>&1 を書いていない | ログ出力記述を追加 |
| crontabが反映されない | 編集後に保存できていない | crontab -l で反映されたか確認 |
| スクリプトのパスが間違い | 相対パス使用 | 絶対パスで記述 /home/oracle/... |
■ 上級テクニック:一時停止と復元
crontab -l > cron_backup.txt # 現在の設定をバックアップ
crontab -r # cronを一旦すべて削除
crontab cron_backup.txt # 復元
一時的にcronを止めたいときに便利です。
■ 応用例:月末のみ実行したい場合
0 23 28-31 * * [ "$(date +\%d -d tomorrow)" = "01" ] && /path/to/script.sh
これは「明日が1日なら今日が月末」と判定して実行するワンライナーです。
■ まとめ
| ポイント | 解説 |
|---|---|
| cronとは | Linuxでコマンドを定期実行する仕組み |
| 書式 | 「分 時 日 月 曜日 コマンド」の6項目で構成 |
| 活用例 | バックアップ、監視、ログ削除、再起動など |
| 注意点 | 環境変数、実行権限、ログ出力の設定が必要 |
| トラブル対応 | cronは静かなのでログが重要 |




コメント