From 329ad40dd7b99725ee02f6d7c7302c0d2587de60 Mon Sep 17 00:00:00 2001 From: claude_dev Date: Sat, 22 Aug 2026 09:15:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(nas):=205m=E4=B8=8B=E8=BD=BD=E8=84=B1?= =?UTF-8?q?=E7=A6=BB=E4=B8=BB=E5=AE=B9=E5=99=A8=E6=B2=BB=E6=9C=AC=E2=80=94?= =?UTF-8?q?=E2=80=94DSM=E4=BB=BB=E5=8A=A1=E5=8E=9Fdocker=20exec=E8=BF=9B?= =?UTF-8?q?=E4=B8=BB=E5=AE=B9=E5=99=A8=E8=B7=91,=E4=BB=BB=E4=BD=95push?= =?UTF-8?q?=E2=86=92CI=E9=87=8D=E5=90=AF=E4=B8=BB=E5=AE=B9=E5=99=A8=3D?= =?UTF-8?q?=E6=9D=80=E5=9C=A8=E8=B7=91=E7=9A=845m(08-20=E4=B8=A4=E6=A1=88+?= =?UTF-8?q?08-22=E5=A2=9E=E9=87=8F=E6=A1=88=E4=B8=89=E6=A1=88=E5=AE=9E?= =?UTF-8?q?=E9=94=A4,=E7=B3=BB=E7=BB=9F=E6=80=A7);=E4=BF=AE=3D=E7=8B=AC?= =?UTF-8?q?=E7=AB=8B=E4=B8=80=E6=AC=A1=E6=80=A7=E5=AE=B9=E5=99=A8docker=20?= =?UTF-8?q?run=20--rm=E5=90=8C=E9=95=9C=E5=83=8F=E5=90=8Ctag(=E4=B8=8E?= =?UTF-8?q?=E7=8E=B0=E5=BD=B9=E5=AE=B9=E5=99=A8sanguo=5Fvnpy=5Fv2:lock-ali?= =?UTF-8?q?gned=E5=AE=9E=E8=AF=81=E4=B8=80=E8=87=B4,CI=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B7=9F=E8=B8=AA=E7=89=88=E6=9C=AC),?= =?UTF-8?q?=E6=8C=82=E8=BD=BD=E4=B8=8E=E4=B8=BB=E5=AE=B9=E5=99=A8=E5=AE=8C?= =?UTF-8?q?=E5=85=A8=E4=B8=80=E8=87=B4,=E4=B8=BB=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E6=B0=B8=E4=B8=8D=E6=B3=A2=E5=8F=8A;?= =?UTF-8?q?=E5=8D=95=E5=AE=9E=E4=BE=8B=E9=94=81/pid=E6=B4=BB=E6=80=A7/stat?= =?UTF-8?q?e=E5=B9=82=E7=AD=89=E5=85=A8=E9=83=A8=E6=B2=BF=E7=94=A8;DSM?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E6=94=B9=E4=B8=80=E8=A1=8C:bash=20/volume1/s?= =?UTF-8?q?tock/sanguo=5F5m/run=5F5m.sh;=E2=9A=A0=EF=B8=8F=E7=89=87?= =?UTF-8?q?=E5=AE=BD183d=E7=BB=B4=E6=8C=81=E4=B8=8D=E7=BC=A9(45d=E5=B0=8F?= =?UTF-8?q?=E7=89=87=E5=90=8C=E9=85=8D=E9=A2=9D=E5=A4=9A=E8=B7=914?= =?UTF-8?q?=E5=80=8D=E5=A4=9C=E6=99=9A,=E5=AE=B9=E5=99=A8=E8=A7=A3?= =?UTF-8?q?=E8=80=A6=E5=90=8E=E5=B7=B2=E6=97=A0=E6=9A=B4=E9=9C=B2=E9=9D=A2?= =?UTF-8?q?=E9=97=AE=E9=A2=98,=E6=92=A4=E5=9B=9E=E6=AD=A4=E5=89=8D?= =?UTF-8?q?=E7=BC=A9=E7=89=87=E5=BB=BA=E8=AE=AE)=20[nas]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/nas_sync/run_5m_standalone.sh | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 scripts/nas_sync/run_5m_standalone.sh diff --git a/scripts/nas_sync/run_5m_standalone.sh b/scripts/nas_sync/run_5m_standalone.sh new file mode 100644 index 0000000..412ad7c --- /dev/null +++ b/scripts/nas_sync/run_5m_standalone.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# run_5m_standalone.sh — 5m 下载脱离主容器(2026-08-22 治本) +# +# 背景:DSM 任务原用 `docker exec sanguo_vnpy_v2` 跑 5m,进程活在主容器里, +# 任何 git push → CI nas-deploy 重启主容器 = 杀掉在跑的 5m(08-20 两案 + 08-22 +# 增量段被杀,系统性脆弱三案实锤)。 +# +# 修法:改用独立一次性容器(`docker run --rm`)跑**同一镜像同 tag**(主容器用 +# 什么版本它就跑什么版本,CI 部署自动跟踪),主容器重启/重建永不波及本进程。 +# 挂载与主容器完全一致(/volume1/stock + 代码目录),脚本内部单实例锁 +# bs_5m.lock(pid 活性检测)不变,与手动补跑互斥语义保持。 +# +# 部署位:NAS /volume1/stock/sanguo_5m/run_5m.sh(宿主文件,CI 不覆盖; +# 改本文件后需 scp -O 手动同步——DSM 无 SFTP 子系统)。 +# DSM 任务(00:05 那条)命令改为: bash /volume1/stock/sanguo_5m/run_5m.sh +# +# 注意:镜像 tag 若将来基建重建改名,这里要跟着改(与主容器 compose 同源)。 +set -u +DOCKER=/var/packages/Docker/target/usr/bin/docker +LOG=/volume1/stock/sanguo_5m/cron.log + +{ + echo "=== $(date '+%F %T') standalone-container 5m run start ===" + "$DOCKER" run --rm --entrypoint python \ + -v /volume1/stock:/volume1/stock \ + -v /volume1/homes/admin/.sanguo_projects/sanguo_vnpy_v2:/app:ro \ + sanguo_vnpy_v2:lock-aligned \ + /app/scripts/data_platform/bs_5m_eod.py + rc=$? + echo "=== $(date '+%F %T') standalone-container 5m run exit=$rc ===" +} >> "$LOG" 2>&1 +exit "${rc:-0}"