cronでLinuxの定期実行を自動化する方法|構文・実例・トラブル対処まで徹底解説

OS

Linuxサーバーを使ったシステム運用では、「毎日ログを削除する」「バックアップを取る」などの定期処理の自動化は欠かせません。
その中心的な役割を担うのが、cron(クロン)というジョブスケジューラです。

本記事では、cronの仕組み、書き方、実行の仕組み、運用上の注意点、トラブル対処法まで、実務で本当に使えるレベルで解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


■ cronとは?

cronは、LinuxやUNIXで利用できるジョブスケジューラ(定期実行の仕組み)です。
指定した日時・間隔でコマンドやスクリプトを自動実行できます。

例:OracleのRMANバックアップを毎晩2時に自動実行するなど


■ cronの基本構成(図解)

[ crontabファイル ]
↓(1分ごとに確認)
[ cronデーモン(crond) ]

[ コマンドやスクリプトが自動で実行される ]

各ユーザーごとに crontab を持つことができ、実行単位も個別管理されます。


■ cronの基本書式(6つのフィールド)

分 時 日 月 曜日 コマンド
フィールド意味説明
0〜59000分に
0〜232午前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 -ecrontabを編集する
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は静かなのでログが重要


[参考]
バックアップおよびリカバリ・ユーザーズ・ガイド

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました