【Linux】cronでPythonプログラムをサーバー上で定期的に実行する方法

2022.05.01 /

【Linux】cronでPythonプログラムをサーバー上で定期的に実行する方法

本記事ではLinux系OSでPythonスクリプトをcronで定期的に実行する方法について解説していきます。

Windowsではタスクスケジューラーで定期実行を計画できるように、Linxではcron(crontab)を利用してプログラムの定期実行の管理を行います。

PythonがインストールされているLinuxサーバーであれば、このcronを使って指定したスケジュールでPythonスクリプトを実行できます。

私の場合

cronはスクレイピングによるデータ収集するPythonプログラムや、Pythonで作成したRPAを定期的に実行する用途として利用しています

ぜひ本記事を参考にして、Pythonで作成したプログラムを定期実行してみてください。

cron

cronとは

cron(クーロン)とは、Linux系OSで定期的に実行する処理を自動化してくれる機能です。主にバックアップやバッチ処理といった定期的に実行する必要がある処理に対して利用されます。

cronによるジョブスケジューリングはシステムレベルとユーザー毎のものに分けられます。本記事ではユーザー毎に設定するcrontabコマンドを利用します。

「crontab -e」を実行し、表示されるcrontabファイルの編集画面でスケジュールとコマンドを記入します。記入する書式(構文)は以下のようになります。

構文

min hour dom month dow command

min 分の意味、0~59を指定
hour 時間の意味、0~12を指定
dom 日(day of month)の意味、1~31を指定
month 月の意味、1~12またはjan-decを指定
dow 週(day of week)の意味、0~7またはsun-satを指定(0と7は日曜日)
command 実行したいコマンドを指定

cronについてより詳しくは以下記事をご参照ください。

cronでPythonを実行する用途

Pythonは現在最も人気のあるプログラミング言語の一つです。

Pythonは機械学習(AIやディープラーニング)やRPAのような自動化プログラムなど様々な分野で利用されています。Pythonについて詳しくは以下記事をご参照ください。

PythonがインストールされているLinuxサーバーでは、以下の用途でPythonをcronで定期実行しています。

  • データベースのバックアップ
  • スクレイピングによるデータ収集
  • RPAプログラムの実行
  • メールの送信
  • WebサイトやWebアプリケーションの更新作業
  • サーバーなどの死活監視

上記は用途のほんの一部です。ほかにも様々な用途でPythonを定期的に実行しています。

Pythonの実行ファイルのパス

cronでPythonを定期実行するためには、まずPythonの実行ファイルのパスを知る必要があります。

Pythonの実行ファイルのパスを得るために、以下コマンドを実行します。

$ which python3

上記コマンドを実行して表示したパスが、Python実行ファイルのフルパスです。

Pythonスクリプトをcronで定期実行する

LinuxサーバーでPythonスクリプトをcronで定期的に実行する流れを以下に記します。

  1. 「which python3」を実行してPython実行ファイルのパスを確認
    例:/usr/bin/python3
  2. 定期実行するPythonスクリプトを作成
    # 例:test.py
    print('Hello world')
    
  3. 「crontab -e」を実行
  4. スケジュールとコマンドを記入(5分ごとにtest.pyを実行し、出力結果をtest.logに書き込む)
    例:*/5 * * * * /usr/bin/python3 /home/ubuntu/test.py >> /home/ubuntu/test.log
  5. 「systemctl restart cron」を実行

上記の流れでPythonスクリプトを定期実行するジョブスケジューリングの登録ができました。ちなみに1分後にログを確認すると、定期実行されていることがわかります。

$ cat test.log
Hello world

まとめ

本記事「【Linux】cronでPythonプログラムをサーバー上で定期的に実行する方法」はいかがでしたか。

Linuxサーバーを使っているならば、ぜひ本記事を参考にしてcronでPythonプログラムを定期実行してみてください。