そのため、スクリプト名(python SCRIPTNAME.py)を入力するだけでターミナルで起動するpythonスクリプトがあります
単に停止してからpythonスクリプトを1時間ごとに開始するスクリプトまたはcronジョブを作成することは可能だろうかと思っています。
Pythonスクリプトを daemonize またはサービスを作成したいようです。これは、他のアプリケーションが適切な順序または適切なタイミングで起動する方法です。
Pythonスクリプト用にsystemd
サービスを作成し、systemctl
を介してサービスとインターフェイスする必要があります。
systemctl restart mypython
systemctl enable mypython
スクリプトをこのように動作させたら、cron
をセットアップして必要なことを行うことができます。これはおそらくサービスを再起動するためです。
スクリプトの目的と、スクリプトが適切に実行されているかどうかを判断する能力に応じて、サービスを強化して、実行が停止したかどうかを報告するか、 monit
などのソリューションを調べます。
指摘したように、 この回答 は有用な情報を提供しますが、rc.local
などの古いツールが含まれています。 systemd
を使用する代わりに、プロセスのPIDを追跡し、そのプロセスを強制終了して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のスレッディングモジュールを使用して、スクリプトの関連部分をスケジュールすることを検討してください。 https://stackoverflow.com/a/50537798/3701431 を参照してください