fix(nas): sync_parquet.sh加互斥锁防周日双触发撕损——DSM id=6(周日04:00)当年配置即跑本脚本全量但从未实证(无parquet.log,当时标注待用户DSM UI确认命令),08-21又挂了sync_valuation_daily.sh周日钩子(~03:3x)同一脚本,两路若同日都触发=双scp -r并发写同文件撕损parquet;mkdir原子锁+>6h陈旧覆盖(单跑70min远不到)+trap EXIT清理,哪路先到哪路跑,后到skip留痕 [nas]
This commit is contained in:
@@ -8,6 +8,19 @@ VPS=Administrator@49.232.102.198
|
||||
DATA=/volume1/stock/sanguo_vnpy_v2/data
|
||||
LOG=/volume1/stock/sanguo_vnpy_v2/data_backup/parquet.log
|
||||
|
||||
# 互斥锁(2026-08-21): 触发源两路=周日钩子(sync_valuation_daily.sh)与 DSM id=6 周日04:00,
|
||||
# 双 scp -r 并发写同文件会撕损; mkdir 原子锁, >6h 视陈旧覆盖(单跑 70min 远不到)。
|
||||
LOCK=/volume1/stock/sanguo_vnpy_v2/data_backup/parquet_full.lock
|
||||
if [ -d "$LOCK" ]; then
|
||||
if [ -z "$(find "$LOCK" -maxdepth 0 -mmin +360 2>/dev/null)" ]; then
|
||||
echo "[$(date '+%T')] lock held, another full sync running -> skip" >> "$LOG"
|
||||
exit 0
|
||||
fi
|
||||
rmdir "$LOCK" 2>/dev/null
|
||||
fi
|
||||
mkdir "$LOCK" 2>/dev/null || { echo "[$(date '+%T')] lock mkdir fail" >> "$LOG"; exit 1; }
|
||||
trap 'rmdir "$LOCK" 2>/dev/null' EXIT
|
||||
|
||||
echo "=== parquet scp start $(date) ===" >> "$LOG"
|
||||
cd "$DATA" || { echo "cd fail" >> "$LOG"; exit 1; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user