fix(schedule): 條目長度那道警告本來說不出話

新加的長度閘門用了 warn 來報「距離上限不到 100」,而這一支只定義 note。
殼回一句「warn: not found」到 stderr,那句提醒一次都沒印出來。

一道說不出話的檢核,跟沒有那道檢核是同一件事——而且它連自己壞了都只在
stderr 留一行,正常輸出上看不出任何異常。

修掉之後它第一次開口就說出一件要處理的事:這台機器的條目有 973 個位元組,
距上限只剩 27。長度大半來自 wiki 存取庫那一系列變數的快照,一支約 40 個
位元組——再多一支頁型變數就裝不起來,而那一次只會回 command too long。
所以訊息裡把這個來源講出來,人才知道要縮哪裡。

這一支之前就踩過同一個坑(另一段檢核也寫了 warn),所以註解裡寫明它只有
note,沒有 warn。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-07 12:52:23 +08:00
co-authored by Claude Opus 5
parent 3dc6b32088
commit 2265dcd59c
4 changed files with 7 additions and 4 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "jsc-assist", "name": "jsc-assist",
"version": "0.3.5", "version": "0.3.6",
"description": "助理:事件收攏、健康巡檢與待辦簿(MONITOR_{HASH} wiki 頁)", "description": "助理:事件收攏、健康巡檢與待辦簿(MONITOR_{HASH} wiki 頁)",
"skills": "./skills", "skills": "./skills",
"author": { "author": {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "jsc-assist", "name": "jsc-assist",
"version": "0.3.5", "version": "0.3.6",
"description": "助理:事件收攏、健康巡檢與待辦簿(MONITOR_{HASH} wiki 頁)", "description": "助理:事件收攏、健康巡檢與待辦簿(MONITOR_{HASH} wiki 頁)",
"skills": "./skills", "skills": "./skills",
"jsc": { "jsc": {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "jsc-assist", "name": "jsc-assist",
"version": "0.3.5", "version": "0.3.6",
"description": "助理:事件收攏、健康巡檢與待辦簿(MONITOR_{HASH} wiki 頁)", "description": "助理:事件收攏、健康巡檢與待辦簿(MONITOR_{HASH} wiki 頁)",
"skills": "./skills/", "skills": "./skills/",
"jsc": { "jsc": {
+4 -1
View File
@@ -731,8 +731,11 @@ crontab_install() {
if [ "$_len" -ge "$CRON_LINE_MAX" ]; then if [ "$_len" -ge "$CRON_LINE_MAX" ]; then
die 4 "$_job 的條目有 $_len 個位元組,達到 cron 一行的上限 $CRON_LINE_MAX,這一批裝不進去。條目長度的來源是環境變數快照($SNAPSHOT_NAMES)與 PATH 快照——先看哪一個值特別長,多半是掃描起點或排除清單寫得太長。縮短那個值,或用 JSC_ASSIST_CRON_LINE_MAX 覆寫上限(覆寫之前先確認這台機器的 cron 真的收得下)。" die 4 "$_job 的條目有 $_len 個位元組,達到 cron 一行的上限 $CRON_LINE_MAX,這一批裝不進去。條目長度的來源是環境變數快照($SNAPSHOT_NAMES)與 PATH 快照——先看哪一個值特別長,多半是掃描起點或排除清單寫得太長。縮短那個值,或用 JSC_ASSIST_CRON_LINE_MAX 覆寫上限(覆寫之前先確認這台機器的 cron 真的收得下)。"
fi fi
# 這一支只定義 note,沒有 warn。這裡本來寫 warn,於是殼回一句「warn: not found」而那句
# 提醒一次都沒印出來——條目長到 973 個位元組、距上限只剩 27,而該說話的那道檢核是啞的。
# 一道說不出話的檢核跟沒有那道檢核是同一件事,而且它連自己壞了都只在 stderr 留一行。
if [ "$_len" -ge $((CRON_LINE_MAX - 100)) ]; then if [ "$_len" -ge $((CRON_LINE_MAX - 100)) ]; then
warn "$_job 的條目有 $_len 個位元組,距離 cron 一行的上限 $CRON_LINE_MAX 不到 100。再多加一個環境變數快照就會裝不進去,而那一次的錯誤訊息只會說 command too long。" note "$_job 的條目有 $_len 個位元組,距離 cron 一行的上限 $CRON_LINE_MAX 不到 100。再多加一個環境變數快照就會裝不進去,而那一次的錯誤訊息只會說 command too long。條目長度大半來自 wiki 存取庫那一系列變數的快照,一支約 40 個位元組。"
fi fi
done done