コンソールで閉じるときにいくつかのクリーンアップコマンドを実行する必要があるBashスクリプトがあります。
デフォルトでは、クリーンアップは私のPythonデーモンから再起動するコマンドです。人) 現在のプロセスを停止し、新しいプロセスを開始します。 Pythonデーモンアプリケーションを監視するためのBashスクリプト。
しかし、問題は、何らかの理由でPythonプログラムを再起動するためにプログラムを起動しないことです。
Bashスクリプトは、Raspbianを使用するRaspberry Piのデスクトップにあります。ダブルクリックして選択して実行する必要があります。端末で実行。
これが私のコードの中核です。
function clean_up {
python3 A restart & #stops the python Deamon if running, then start it. (will start if it wasn't running to begin with)
disown
quit
}
trap clean_up SIGINT
trap clean_up SIGTERM
trap clean_up SIGHUP
trap clean_up SIGCHLD
trap clean_up SIGCONT
python3 A stop
... (code to start monitor)
python3 A start ArgumentToHookToMonistor
答え1
これが好きなものになるかどうかはわかりませんが、問題をデバッグするのに役立ちます。
スクリプトの先頭で:ジョブ制御を有効にする(スクリプトではデフォルトで無効になっています):
set -m
次に、clean_up関数で次のよう
disown
に変更します。disown %1 2>&1 | tee /path/to/logfile.log
また、関数でスクリプトを手動で実行するときにメッセージを表示する時間が必要な場合は、その行の
sleep 3
前に追加してください。quit