cronとPythonで実現する定期バッチ処理入門

システム運用やデータ処理の現場では、毎日決まった時刻に処理を自動実行したい場面が多くあります。たとえば「毎日午前3時にログを集計してメール送信する」「毎週月曜にバックアップを取得する」などです。

Linux環境でこのような定期処理を実現する代表的な仕組みが cron です。そして、処理内容を柔軟に記述できるのが Python。両者を組み合わせることで、強力で効率的なバッチ処理を実装できます。

本記事では、中級エンジニア向けに cronとPythonで定期バッチ処理を構築する手順 を解説します。


cronとは?

cronは、Unix系OSに標準搭載されている「スケジューラ」です。
設定ファイル(crontab)に実行時刻とコマンドを記述することで、任意の時間にタスクを自動実行できます。

cronの構文

分 時 日 月 曜日 コマンド

例えば、毎日3時に処理を実行する場合は次のように書きます:

0 3 * * * /usr/bin/python3 /home/user/script.py

Pythonスクリプトの準備

まずは自動実行したい処理をPythonで書きます。
例として「ログファイルを読み込み、日付付きで出力する」スクリプトを作ってみましょう。

# /home/user/scripts/daily_job.py
import datetime

def main():
    today = datetime.date.today()
    with open(f"/home/user/logs/{today}.log", "w") as f:
        f.write(f"Batch executed on {today}\n")

if __name__ == "__main__":
    main()

これで、毎日ログが自動生成される仕組みを作れます。


cronに登録する

次に、このPythonスクリプトをcronで実行するよう設定します。

  1. crontabを編集 crontab -e
  2. 以下を追記 0 3 * * * /usr/bin/python3 /home/user/scripts/daily_job.py >> /home/user/logs/cron.log 2>&1

これで毎日午前3時にPythonスクリプトが実行され、標準出力・エラー出力がログに保存されます。


よく使うcronの設定例

  • 毎時0分に実行 0 * * * * コマンド
  • 毎週月曜の朝6時に実行 0 6 * * 1 コマンド
  • 5分おきに実行 */5 * * * * コマンド

デバッグと注意点

cronでうまく動かない場合は、以下を確認してください。

  • 環境変数が異なる
    cronは通常のシェルと異なり、PATHなどが制限されています。フルパス指定を徹底しましょう。
  • 権限の確認
    実行するユーザーがPythonや対象ファイルにアクセスできるかを確認します。
  • ログを残す
    標準出力・エラー出力をリダイレクトしておくとトラブルシュートが楽になります。

まとめ

  • cron でスケジュール実行を管理
  • Python で柔軟な処理を記述
  • ログやエラーハンドリングを組み合わせれば、本格的なバッチ処理基盤を構築可能

定期実行が求められるタスクは多岐にわたります。
たとえば「データ収集」「レポート生成」「バックアップ」など、あなたの現場でも活用できる場面は多いはずです。

cronとPythonを組み合わせて、日常業務をもっと効率化してみましょう。

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