共享節點衝突場景
應與佇列、鎖、屬主同一套說法寫進 Runbook。
- 斷線丟殼:裸 SSH 遇 SIGHUP,長編譯易中斷。
- 雙附著:共用家目錄或同一路徑,
pod install等半寫入交錯。 - CI 與人工:
flock/Simulator 互卡,像搶佔。 - 長壽 tmux:殘留舊
xcode-select與環境,與流水線不一致。
搶佔=高優作業或鎖使假設失效;用車道、分帳戶、分目錄、多節點編碼優先順序。
tmux 與裸 SSH 工作階段對照表
tmux 管耐久,不管隔離;邊界靠帳戶與目錄。
| 維度 | 裸 SSH 工作階段 | tmux(命名+團隊規範) |
|---|---|---|
| 斷線後存活 | 否(除非 nohup 等) | 是,tmux attach -t |
| 多窗格 | 單流 | 分窗;可統一捲動上限 |
| 稽核 | 難認殼主 | 名稱對人/工單/車道 |
| 與 CI 隔離 | 弱 | 仍弱,須分帳戶路徑 |
| 風險 | 抖動丟工作 | 陳舊環境、錯 Xcode |
工作階段持久化決策矩陣
| 訊號 | 優先策略 | 升級路徑 |
|---|---|---|
| VPN 不穩 | tmux+SSH Alive | Wiki 固定附著與命名 |
| 共享快取 | 串行+flock |
加節點或分區 |
| GUI+無頭同機 | 拆節點或分時 | 專用 Simulator 機 |
| 應急排錯 | 應急帳戶+臨時 clone | 輪換憑證、歸檔紀錄 |
最小 tmux 設定參數
團隊基線寫入 ~/.tmux.conf 或 /etc/tmux.conf。
set -g mouse onset -g history-limit 50000(機小可降)set -g default-terminal "screen-256color"或tmux-256colorsetw -g aggressive-resize on;set -g detach-on-destroy off
命名:禁匿名;縮寫-工單 或 pool-ci-lane-N。SSH Alive(主機+用戶端)與 tmux 並用。
使用者/目錄權限隔離步驟
- 身分:
builder-ci與人工分開;CI 不登入人工主帳。 - 組與目錄:共享樹用 POSIX 組;
chmod 2770、umask 027。 - 工作根:每人
/srv/builds/<user>或不相交 worktree。 - 鑰匙圈:分角色;細節見權限隔離 FAQ。驗收
namei -l;月檢777。
構建佇列與檔案鎖閾值 FAQ
問:tmux 為何要和 flock 同一敘事?
長殼易占鎖或 GUI;政策須與佇列一致。
問:pending 深度?
每車道或全域軟頂約二十,超限快失敗換節點;見佇列 FAQ。
問:flock -w 與作業逾時?
等鎖須遠小於作業逾時;人機互動約三十~一百二十秒,重臨界區可一百二十~三百秒。CI 可用 -n 快失敗。
構建工作階段搶佔規避清單
發布/交接勾選:
- □ 禁匿名 tmux;名稱對人/工單/車道。
- □ 人機與 CI 分帳戶或分根;快取不交叉。
- □
flock單一範本,鎖路徑與佇列文件同源。 - □ 逾時殺程序樹並記錄構建號與鎖路徑。
- □ GUI/無頭常衝突則拆節點,勿加窗格;月清殭屍工作階段。
小結與下一步
tmux · 多節點 · 規範工作階段
用多節點與命名工作階段取代「一機萬能」
Meshmac 提供多區域遠端 Mac 與 SSH/VNC;先把 tmux 基線與 flock 閾值寫進 Runbook,再談拉高併發。免登入可瀏覽與下單。
多節點池化
工作階段命名規範
權限隔離
佇列與鎖對齊