再起動
再起動は3つあります — どれを使うかから
同じ名前の restart.sh が2か所にあり、アプリだけを再起動する3つ目が別にあります。
「Tomcatだけ6秒」という言葉はどれにも該当しません。
| 何 | どこ | 対象 | かかる時間 |
|---|---|---|---|
| ホスト再起動 | plantpulse-edge-docker/bin/restart.sh | コンテナ全体 — 残骸を整理してから再起動 | 分単位 |
| スタック再起動 | $PE_HOME/bin/restart.sh | ゲートウェイ 全モジュール — stop.sh + start.sh を1プロセスとして | ~150~210秒 |
| アプリのみ再起動 | $PE_HOME/bin/restart-app.sh | Tomcat(アプリ)のみ。 Cassandra · HiveMQ · Node-RED はそのまま | 30~90秒 |
ほとんどの設定変更はアプリのみ再起動で十分です。DB・MQTT・Node-RED まで再起動
する必要があるもの(例: mqtt.enable トグル)だけがスタック再起動です。
アプリのみ再起動 (restart-app.sh)
画面のアプリ再起動ボタンと POST /api/v1/system/restart が3秒後にこれを呼び出します。
直接実行することもできます。
$PE_HOME/bin/restart-app.sh
# 30~90초 후
curl -s http://127.0.0.1/api/v1/edge | jq
スクリプトがまず Cassandra(9042)・Redis(6379)・MQTT(1883) を確認し、死んでいれば 警告を出力します。アプリだけを再起動してもブートストラップは結局失敗するからです(既知の制限)。
「再起動しても戻らない」で時間を無駄にしないように、その警告を先に読んでください — その 場合はスタック再起動か、そのコンポーネントを先に復旧させる必要があります。
コンテナの PID 1 監視プロセスは Tomcat プロセスが消えるとコンテナ全体を停止させます。 アプリのみ再起動すると Tomcat が30~90秒間消えるため、その監視に引っかかります。
そこで restart-app.sh は起動時に server/logs/.restart-in-progress マーカーを作成し、
「意図した再起動なので待て」と通知し、終了時に削除します。このスクリプトは Tomcat ツリーから
切り離されて(setsid)動作するため、Tomcat を停止させながらも自身は生き残ってマーカーを削除します。
スタック再起動 ($PE_HOME/bin/restart.sh)
stop.sh と start.sh を1つのプロセス内で連続して実行します。
ssh "stop.sh; start.sh" でリモート実行中に SSH セッションだけが切断されると、次のどちらかになります —
停止したまま放置される(start が実行されない)、または、遅れて終了した反対側がすでに起動したスタックを再度
停止させる。
そこでこのスクリプトは stop の結果に関係なく必ず start に進み(停止したまま残るのが最悪のため)、 結果をマーカーファイルに記録して呼び出し元が完了を確認できるようにします。
リモートでは次のように呼び出します。
ssh 박스 "RESTART_RUN_ID=xyz nohup setsid $PE_HOME/bin/restart.sh >/dev/null 2>&1 </dev/null &"
# 그다음 /tmp/pp-restart-xyz.done 을 폴링한다 (내용이 start.sh 의 종료 코드)
起動はモジュールを順番に立ち上げ、モジュールごとに最大300秒の制限が設けられています (1つのモジュールが永遠に待って起動全体が停止するのを防ぎます)。最後に最大180秒間、 起動したかどうかを確認します。
ホスト再起動 (plantpulse-edge-docker/bin/restart.sh)
ゲートウェイを安全に再起動します。残っている残骸を先に掃除することが
systemctl restart との違いです。
sudo /opt/kopens/plantpulse-edge-docker/bin/restart.sh
systemctl restart だけでは名前衝突で失敗する可能性があります古いコンテナが名前を保持したまま残っている、またはゾンビプロセスがあると、新しいコンテナが
name already in use で起動できません。restart.sh はその残骸を先に整理してから
サービスを起動します。
いつ再起動するか
| 状況 | 再起動が答えか |
|---|---|
設定(app.properties・環境変数)を変更した | はい — 設定は起動時に一度だけ読み込まれます |
| ドライバオプションを変更した | いいえ — 接続単位で停止 → 開始すれば済みます |
| 収集が止まったように見える | まず診断と点検 — 原因を把握せずに再起動すると証拠が消えます |
| イメージを新しく取得した | 再起動ではなくアップグレード |
確認
cd /opt/kopens/plantpulse-edge-docker/bin
./status.sh
./health.sh
./logs.sh -f # 부팅을 따라가며 본다