【Linux】cronでPythonプログラムをサーバー上で定期的に実行する方法
2022.05.01 /
本記事では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についてより詳しくは以下記事をご参照ください。
【Ubuntu】cron(crontab)でプログラムを定期的に実行:ジョブスケジューリング
cronでPythonを実行する用途
Pythonは現在最も人気のあるプログラミング言語の一つです。
Pythonは機械学習(AIやディープラーニング)やRPAのような自動化プログラムなど様々な分野で利用されています。Pythonについて詳しくは以下記事をご参照ください。
【Python】Pythonの特徴と他のプログラミング言語との違い
PythonがインストールされているLinuxサーバーでは、以下の用途でPythonをcronで定期実行しています。
- データベースのバックアップ
- スクレイピングによるデータ収集
- RPAプログラムの実行
- メールの送信
- WebサイトやWebアプリケーションの更新作業
- サーバーなどの死活監視
上記は用途のほんの一部です。ほかにも様々な用途でPythonを定期的に実行しています。
Pythonの実行ファイルのパス
cronでPythonを定期実行するためには、まずPythonの実行ファイルのパスを知る必要があります。
Pythonの実行ファイルのパスを得るために、以下コマンドを実行します。
$ which python3
上記コマンドを実行して表示したパスが、Python実行ファイルのフルパスです。
Pythonスクリプトをcronで定期実行する
LinuxサーバーでPythonスクリプトをcronで定期的に実行する流れを以下に記します。
- 「which python3」を実行してPython実行ファイルのパスを確認
例:/usr/bin/python3 - 定期実行するPythonスクリプトを作成
# 例:test.py print('Hello world')
- 「crontab -e」を実行
- スケジュールとコマンドを記入(5分ごとにtest.pyを実行し、出力結果をtest.logに書き込む)
例:*/5 * * * * /usr/bin/python3 /home/ubuntu/test.py >> /home/ubuntu/test.log - 「systemctl restart cron」を実行
上記の流れでPythonスクリプトを定期実行するジョブスケジューリングの登録ができました。ちなみに1分後にログを確認すると、定期実行されていることがわかります。
$ cat test.log
Hello world
まとめ
本記事「【Linux】cronでPythonプログラムをサーバー上で定期的に実行する方法」はいかがでしたか。
Linuxサーバーを使っているならば、ぜひ本記事を参考にしてcronでPythonプログラムを定期実行してみてください。