スクリプト名を入力するだけでターミナルで起動できる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 スクリプト用のサービスを作成します。これにより、他のアプリケーションが適切な順序または適切なタイミングで起動します。
systemd
Python スクリプト用のサービスを作成し、 を介してそのサービスとインターフェースする必要がありますsystemctl
。
systemctl restart mypython
systemctl enable mypython
スクリプトがこのように動作するようになったら、cron
必要な操作 (おそらくサービスの再起動) を実行するように設定できます。
スクリプトの目的と、スクリプトが適切に実行されているかどうかを判断する能力に応じて、サービスが停止した場合に報告するようにサービスを拡張したり、次のような解決策を検討したりすることもできます。monit
。
指摘したように、この答えは有用な情報を提供しますが、 などの古いツールが含まれていますrc.local
。 を使用する代わりにsystemd
、プロセスの PID を追跡し、そのプロセスを強制終了して 1 時間ごとにスクリプトを再実行することができます。