Crontab 経由で Python スクリプトを実行する

Fariba Laiq 2024年2月15日
  1. Linux/Unix/Solaris の Crontab
  2. Crontab を介して Python スクリプトを実行する
Crontab 経由で Python スクリプトを実行する

多くの場合、効率と健全性のためにプロセスを自動化する必要がある状況に直面しています。 従業員に定期的にメールを送信することから、一部のアプリケーションのライセンスを 3 か月ごとに更新することまで、さまざまです。

Crontab は、Cron テーブルから派生しています。 Cron は、自動化を支援する Unix、Solaris、および Linux オペレーティング システムによって提供される自動化ユーティリティです。

この記事では、Crontab と、それを使用して Python スクリプトを実行する方法について説明します。

Linux/Unix/Solaris の Crontab

Cron は、システムが /etc/init.d スクリプトから起動するときに実行されるデーモンです。 必要に応じて、initスクリプトまたはcrondを使用して、デーモンを開始/再起動または停止することもできます。これは、基本的に Linux やその他のフレーバーにあるコマンド サービスです。

Crontab または Cron テーブルは、無数のコマンドをリスト形式で含むファイルです。 これらのコマンドまたは cron エントリは、特定の時間に実行されるように設定されています。

一般にcronjobsCrontabsとして知られるこのファイル内のコマンドは、通常、システムの管理、保守、または管理に使用されます。 また、バックアップなど、定期的に必要な他のタスクにも使用できます。

各ユーザーは、独自の Crontab を持つことができます。

各 Crontab ファイルには、分、時間、日 (日付)、月、日、および最後を指定する 5つのフィールドがあり、このすべての後に、以前に指定された時刻に実行されるはずのコマンドが続きます。

Crontab を効率的に維持するためのヒントを次に示します。

  1. 各フィールドを区切るためにスペースを挿入します。
  2. 複数の値を区切るにはコンマを挿入します。
  3. ハイフン (-) を挿入して、値の範囲を指定します。
  4. アスタリスク (*) を挿入して、フィールドに可能なすべての値を含めます。
  5. 行頭にハッシュ (#) を使用して、コメントを追加したり、ファイルに空白行を挿入したりします。

Linux/Unix/Solaris での Cron ジョブまたは Cron スケジュール

Cron ジョブまたは Cron スケジュールは、コマンドを実行する日時を指定する特定の命令またはコマンドのセットです。 cron テーブル内に複数の実行コマンドが存在する可能性があります。

Crontab を介して Python スクリプトを実行する

次の簡単な手順に従って、Crontab を使用して Python スクリプトを実行できます。

  • 実行する Python スクリプトを検索または定義します。
  • 作業したい端末でコマンド crontab -e を実行します。
  • ここで、i を押して編集モードに入る必要があります。
  • 実行する Python スクリプトのパスを指定できる、スケジュールされたコマンドを入力します。
  • エスケープ ボタンを押すと、編集モードを終了できます。
  • コマンド :wq を使用して、Crontab を作成および書き込みます。

Crontabの例

さまざまなシナリオで Crontab がどのように見えるかの例を次に示します。

  1. コンピュータ内の特定の場所またはパスから、特定の時刻にいくつかの一時ファイルを毎日削除します。

    30 18 * * * rm /home/someuser/tmp/*
    
  2. 7 日ごとに実行するコマンド:

    0 0 */7 * * shell_command_here
    
  3. システムで毎分スクリプトを実行する:

    * * * * * cd/Users/name/Automation && /usr/bin/python testing_crontabs.py
    

独自のスクリプトを作成し、Crontab 経由で実行してみましょう。 以下は、この記事で使用する Python スクリプトです。

コード例:

#! /usr/bin/python3

import sys
from datetime import datetime


def main(args):
    result = 1
    for arg in args[1:]:
        result *= int(arg)

    print(f"Result: {result} on: {datetime.now()}.")


if __name__ == "__main__":
    main(sys.argv)

出力:

crontab python スクリプト

次に、選択したターミナルでコマンド sudo chmod +x main.py を実行して、ファイルを実行可能にします。

次に、ターミナルで crontab -e を実行します。提供されたオプションからエディターを選択するよう求められたら、この記事では nano を選択し、次の cron コマンドを追加します。

*/2 * * * * /home/$(USER)/myscript.py 1 2 3 4 5 >> /home/$(USER)/outputfile.txt

USER を特定のマシンのユーザー名に置き換える必要があります。 エディターを保存して終了すると、Crontab の準備が整い、機能するようになります。

どうすればわかりますか? Crontab によると、スクリプトは 2 分ごとに実行されるはずです。

著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Python Cron