develop
master
PATH
command too long
這台機器目前跑的短 PATH 條目,是拿工作目錄版本裝上去的。正式版本還停在裝不起來的那一版,所以下次有人重裝排程就會退回長 PATH,又會撞上同一個長度上限。
版號 0.2.5 到 0.2.6。
去重與去死路徑都不夠。這台機器的 PATH 有 61 段,光是還活著又不重複的就 38 段。
這一條要解決的問題很窄:cron 只給 /usr/bin 與 /bin,而偵測 CLI 那一支靠 PATH 找執行檔,找不到就回結束碼 0 加一份空清單——看起來像「這台機器沒裝 CLI」。
/usr/bin
/bin
巡檢要跑的指令本身走的是字面絕對路徑,不靠這一條。靠它的只有那幾支腳本自己呼叫的外部程式。
收尾接上 cron 本來就會給的兩段,免得只剩自訂目錄而找不到系統工具。
有些 CLI 裝在會過期的目錄底下——這台機器上就有一支落在帶行程編號的多殼層目錄裡,那種路徑下一次開機就不在了。這裡不特別過濾:過濾要認得每一種安裝方式,而那份名單會過期得比路徑還快。重跑一次 install 就重新拍一份,而條目本來就是安裝當下的快照。
install
不是靠測試,是靠真的裝一次。乾跑不會踩到——長度上限是 crontab 自己檢查的,乾跑根本不呼叫它。上一版的測試每一項都過,因為每一項都繞過了會失敗的那一步。
crontab
裝上短 PATH 之後那一輪的執行結果,三種結局同時出現:
jsc-sdlc:implement
sdlc-gate.sh wp-report
jsc-hooks:hooks-install
jsc-pkg:pkg-update
上一輪同一批是「跑 1 筆、代不出目標 2 筆」,clis=0。
clis=0
上一版把整條 PATH 快照進條目,實測直接裝不起來:crontab 一行有長度上限, 回的是 command too long,結束碼 4。這台機器的 PATH 是 2160 字元,去重又去掉 不存在的那幾段之後還有 1332 字元,仍然超過。 改成只帶放得下 CLI 執行檔的那幾個目錄,這台機器實測兩個、合起來 70 字元, 整行降到 685 字元。夠用的理由是這一條要解決的問題很窄:cron 只給 /usr/bin 與 /bin,而偵測 CLI 那一支靠 PATH 找執行檔,找不到就回結束碼 0 加一份空清單 ——看起來像「這台機器沒裝 CLI」。巡檢要跑的指令本身走字面絕對路徑,不靠它。 收尾接上 cron 本來就會給的那兩段,免得只剩自訂目錄而找不到系統工具。 一個代價寫進註解:有些 CLI 裝在會過期的目錄底下,例如帶行程編號的多殼層 目錄,那種路徑下一次開機就不在了。不特別過濾——過濾要認得每一種安裝方式, 那份名單會過期得比路徑還快。重跑一次 install 就重新拍一份,而條目本來就是 安裝當下的快照。 實測:拿條目會帶的那條 PATH 在清空環境裡跑,五支 CLI 全解得出來;真的裝一次 回結束碼 0,服務在跑,連結檢查通過。 三份 manifest 版號 0.2.5 升到 0.2.6。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #32
No dependencies set.
The note is not visible to the blocked user.
摘要
PATH快照進排程條目,實測裝不起來——crontab 一行有長度上限,回的是command too long、結束碼 4。這一批改成只帶放得下 CLI 執行檔的那幾個目錄。為什麼這一張急
這台機器目前跑的短
PATH條目,是拿工作目錄版本裝上去的。正式版本還停在裝不起來的那一版,所以下次有人重裝排程就會退回長PATH,又會撞上同一個長度上限。版號 0.2.5 到 0.2.6。
三個數字
PATH照抄去重與去死路徑都不夠。這台機器的
PATH有 61 段,光是還活著又不重複的就 38 段。為什麼只帶那幾個目錄就夠
這一條要解決的問題很窄:cron 只給
/usr/bin與/bin,而偵測 CLI 那一支靠PATH找執行檔,找不到就回結束碼 0 加一份空清單——看起來像「這台機器沒裝 CLI」。巡檢要跑的指令本身走的是字面絕對路徑,不靠這一條。靠它的只有那幾支腳本自己呼叫的外部程式。
收尾接上 cron 本來就會給的兩段,免得只剩自訂目錄而找不到系統工具。
一個代價,寫進註解
有些 CLI 裝在會過期的目錄底下——這台機器上就有一支落在帶行程編號的多殼層目錄裡,那種路徑下一次開機就不在了。這裡不特別過濾:過濾要認得每一種安裝方式,而那份名單會過期得比路徑還快。重跑一次
install就重新拍一份,而條目本來就是安裝當下的快照。這個坑是怎麼發現的
不是靠測試,是靠真的裝一次。乾跑不會踩到——長度上限是
crontab自己檢查的,乾跑根本不呼叫它。上一版的測試每一項都過,因為每一項都繞過了會失敗的那一步。已經在這台機器上驗過的結果
裝上短
PATH之後那一輪的執行結果,三種結局同時出現:jsc-sdlc:implement跑sdlc-gate.sh wp-report,下次到期算出來了。jsc-hooks:hooks-install五個 CLI 目標裡有一支回非零,失敗次數加一。那是機器上真實的接線問題,正是這一筆內建項存在的理由;而五個目標裡四個過、一個沒過就整筆算失敗,所以那一支不會被另外四支蓋掉。jsc-pkg:pkg-update的執行紀錄與失敗次數一個字都沒動。上一輪同一批是「跑 1 筆、代不出目標 2 筆」,
clis=0。測試結果
PATH在清空環境裡跑,五支 CLI 全解得出來。前置 Push Request