1時間ごとにPythonスクリプトを再起動する

1時間ごとにPythonスクリプトを再起動する

スクリプト名を入力するだけでターミナルで起動できるPythonスクリプトがあります(python SCRIPTNAME.py)

単に 1 時間ごとに Python スクリプトを停止して開始するだけのスクリプトまたは cron ジョブを作成できるかどうか疑問に思っています。

答え1

最善のアプローチはGNU経由ですtimeout

timeout -k 3600 python3 /path/to/script.py

ここで、-k は「kill after」と秒数を表します。

スクリプトを1時間ごとに実行、終了、再起動するには、次のようにします。

while timeout -k 3600 python3 /path/to/script; do
   sleep 2
done

sleep 2再起動前に少し遅延を追加するだけです


代わりに、PythonのThreadingモジュールを使用してスクリプトの関連部分をスケジュールすることを検討してください。 https://stackoverflow.com/a/50537798/3701431

答え2

あなたはそうしたいと思っているようです悪魔化する、または Python スクリプト用のサービスを作成します。これにより、他のアプリケーションが適切な順序または適切なタイミングで起動します。

systemdPython スクリプト用のサービスを作成し、 を介してそのサービスとインターフェースする必要がありますsystemctl

systemctl restart mypython
systemctl enable mypython

スクリプトがこのように動作するようになったら、cron必要な操作 (おそらくサービスの再起動) を実行するように設定できます。

スクリプトの目的と、スクリプトが適切に実行されているかどうかを判断する能力に応じて、サービスが停止した場合に報告するようにサービスを拡張したり、次のような解決策を検討したりすることもできます。monit


指摘したように、この答えは有用な情報を提供しますが、 などの古いツールが含まれていますrc.local。 を使用する代わりにsystemd、プロセスの PID を追跡し、そのプロセスを強制終了して 1 時間ごとにスクリプトを再実行することができます。

関連情報