Linux で毎日自動的に Python スクリプトを実行し、Git にコミット・プッシュする方法

定期的に Python スクリプトを実行して、結果を Git に自動コミット・プッシュしたい ── そんなときに便利なのが、Linux の cron(クロン) 機能です。この記事では、「毎日日本時間 10 時に自動実行する」設定を例に、スクリプトの作り方からトラブル対処まで解説します。


1. cron とは何か?

cron は Linux 標準のタスクスケジューラで、指定した時間に自動的にコマンドやスクリプトを実行できます。Windows でいう「タスクスケジューラ」のような役割です。
設定は「crontab」というファイルに記述します。


2. スクリプトの準備

まず、自動で実行したい処理をまとめたバッチスクリプト(.sh)を作成します。
ここでは /home/user/project/daily_job.sh に作るとしましょう。

#!/bin/bash
# daily_job.sh - Pythonスクリプトを実行しGitに自動コミット・プッシュする

# 実行ディレクトリへ移動
cd /home/user/project

# Pythonの実行(絶対パスを指定するのがポイント)
/usr/bin/python3 your_script.py >> /home/user/project/cron.log 2>&1

# Git操作
git add .
git commit -m "Daily update $(date '+%Y-%m-%d %H:%M:%S')"
git push origin main

ポイント:

  • >> /home/user/project/cron.log 2>&1
    → 実行ログとエラーログを cron.log に保存。後から確認できるようにします。
  • /usr/bin/python3 の部分は、which python3 コマンドで実際のパスを確認しておきましょう。
  • chmod +x daily_job.sh で実行権限を付与するのを忘れずに。

3. cron の設定

cron の設定ファイルを開きます:

crontab -e

そして、次の 1 行を追加します:

0 10 * * * sh /home/user/project/daily_job.sh

これは「毎日 10 時ちょうどにスクリプトを実行」という意味です。

フォーマット:

分 時 日 月 曜日 コマンド

4. 時間設定(タイムゾーンの確認)

cron はシステムのタイムゾーンを基準に動作します。
実行時刻がずれる場合は、時差が原因かもしれません。

現在の時刻を確認:

date

日本時間(JST)でなければ、次のコマンドで変更します:

sudo timedatectl set-timezone Asia/Tokyo

5. cron サービスの起動確認

cron 自体が動いていなければ、設定しても実行されません。
以下で確認します:

sudo systemctl status cron

または

sudo systemctl status crond

active (running) であれば OK です。
もし停止していたら、次で起動します:

sudo systemctl start cron
sudo systemctl enable cron

6. 実行確認とログの確認

設定後に動作を確認するため、手動で実行してみましょう。

sh /home/user/project/daily_job.sh

問題なく動作すれば、cron でも同様に動くはずです。

もし自動実行されていない場合は、ログを確認します。

grep CRON /var/log/syslog

またはシステムによっては:

cat /var/log/cron

ここで、スクリプトが実行された形跡やエラーメッセージを確認できます。


7. よくあるトラブルと対処法

✅ Python が見つからない

cron はログイン時の環境変数(PATH)を読み込まないため、python コマンドが見つからないことがあります。
→ 絶対パス(例:/usr/bin/python3)を指定しましょう。


✅ Git の認証が通らない

SSH キーを設定していない場合、git push が止まってしまうことがあります。
→ 事前に ssh-keygen で鍵を作成し、GitHub/GitLab に登録しておきましょう。


✅ 権限エラー

スクリプトが root ユーザーで動いていない場合、一部の操作に権限が足りない可能性があります。
/home 配下などのユーザー権限ディレクトリで動かすのが安全です。


8. 自動実行の確認方法

毎日実行後に cron.log を確認してみましょう:

cat /home/user/project/cron.log

そこに Daily update 2025-10-12 10:00:01 のようなログが出ていれば成功です。


まとめ

手順内容
Python スクリプトをまとめた bash ファイルを作る
実行権限を付ける (chmod +x)
crontab -e で毎日 10 時のスケジュールを登録
タイムゾーンと cron サービスを確認
ログ出力を確認してトラブルを解消