From d797adc77ec04e3418dbcc860d1d6ae4bc852ebb Mon Sep 17 00:00:00 2001 From: jack Date: Fri, 28 Aug 2026 18:09:29 +0800 Subject: [PATCH] =?UTF-8?q?dryrun:=20timeout=20=E5=A5=97=E8=BF=9B=20sudo?= =?UTF-8?q?=20=E5=86=85=E5=B1=82=EF=BC=8C=E5=90=A6=E5=88=99=20SIGTERM=20?= =?UTF-8?q?=E6=9C=AA=E5=BF=85=E4=BC=A0=E5=88=B0=20ssh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- live/deploy/dryrun.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/live/deploy/dryrun.sh b/live/deploy/dryrun.sh index 1f93a32..9cdde39 100755 --- a/live/deploy/dryrun.sh +++ b/live/deploy/dryrun.sh @@ -53,7 +53,9 @@ echo "── 4. 能否 ssh 到采集机 ──" # 数一下就等于对端总线的条数,之后它挂着等新内容,由 timeout 收掉。 rb="${SHIP_REMOTE_BUS:-\$HOME/chan-live/state/signals_live.jsonl}" err="$(mktemp)"; outf="$(mktemp)" -timeout 12 sudo -u "$USER_NAME" ssh -T -o BatchMode=yes -o ConnectTimeout=10 \ +# timeout 要套在 sudo **里面**:套外面时 SIGTERM 只到 sudo,未必传给 ssh, +# 于是该被收掉的 tail 会继续挂着 +sudo -u "$USER_NAME" timeout 12 ssh -T -o BatchMode=yes -o ConnectTimeout=10 \ "$SHIP_FROM" "tail -c +0 -F $rb" >"$outf" 2>"$err" || true n="$(wc -l < "$outf")" if grep -qi "Host key verification failed" "$err"; then