cronでPython株価分析スクリプトを毎日自動実行する方法【VPS・Linux】

Uncategorized

※本記事には広告・アフィリエイトリンクが含まれます。収益はサイト運営・検証費用に充てています。

結論から言うと:

  • cronを使えば、VPS上のPythonスクリプトを毎日決まった時刻に自動実行できる仕組みです
  • crontabに1行書くだけで設定が完了するが、パスの指定ミスが最大の落とし穴になる
  • ログファイルへの出力設定をセットで行うと、実行確認が格段に楽になる

cronとは

cronはLinuxに標準搭載されているジョブスケジューラです。「毎日15:30に実行」「平日だけ実行」といった条件をcrontabと呼ばれる設定ファイルに記述する仕組みです。率直に言うと、Python自動化との相性が非常によく、サーバーが起動していれば人手を介さずスクリプトが動き続けます。

crontabの書き方

crontabの書式は「分 時 日 月 曜日 コマンド」の6フィールドです。

# 分  時  日  月  曜日  コマンド
  30  15  *   *   1-5   /usr/bin/python3 /home/stock/fetch_stock.py

曜日は0=日曜、1=月曜、5=金曜です。「1-5」で平日のみ実行できる仕組みです。

Pythonスクリプトをcronに登録

crontabの編集は次のコマンドで行います。

crontab -e

初回は使用するエディタを聞かれます。nanoを選択するとわかりやすいです。

毎日15:30に実行する設定

タイムゾーンをAsia/Tokyoに設定済みの場合、以下の1行で平日15:30に自動実行されます。

30 15 * * 1-5 /usr/bin/python3 /home/stock/fetch_stock.py >> /home/stock/stock.log 2>&1

記述後、Ctrl+X → Y → Enterで保存します。

実行ログをファイルに保存

コマンド末尾の>> /home/stock/stock.log 2>&1が重要です。>>で追記、2>&1でエラーも同じファイルに書き込む仕組みです。ログ確認は次のコマンドで行います。

tail -f /home/stock/stock.log

cronが動いているか確認

cronサービスの状態は次のコマンドで確認できます。

systemctl status cron

「active (running)」と表示されていれば正常に動いている状態です。登録済みのジョブ一覧はcrontab -lで確認できます。

よくある失敗(パス問題)

cron実行時に「command not found」や「ModuleNotFoundError」が出る場合、コマンドのパスが間違っていることが多い原因です。Pythonのパスを確認する手順は次の通りです。

which python3

通常は/usr/bin/python3が返ります。crontabにはこのフルパスを記述します。pip3でインストールしたライブラリが見つからない場合は、スクリプト内でsys.pathを明示的に指定する方法も有効です。

筆者の検証メモ

ConoHa VPS(Ubuntu 22.04)でcronを設定した際、環境変数PATHがログインシェルと異なるため、スクリプト内でライブラリが見つからないエラーが出た。解決策として、crontabの先頭にPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binを追記したところ正常に動作した。

VPS比較記事はこちら


【投資免責事項】本記事で紹介するコードおよび分析結果は情報提供を目的としたものであり、特定の銘柄への投資を推奨するものではありません。投資判断はご自身の責任で行ってください。

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