- archive/hermes-dead-tools-20260820/: hermes独有不在cron不被import的111个一次性排查/测试工具 - archive/hermes-dead-tools-20260820/: 4个废弃scanner(btd1_v3/market_scanner/market_thermometer已废弃/s2v2) - archive/legacy-cleanup-20260820/: MoFin根2旧版(mo_models/technical_analysis)+/home/hmo/scripts无引用旧项目+MoFin/scripts重复prepare_report_data - 删除MoFin根mo_models.py(根旧版,deploy/profile-scripts权威保留) - 保留: mofin_db.py/mo_data.py硬链接(server.py多层sys.path需各目录访问同一inode,非冗余) - fix_gateway.py保留(Gateway看门狗fix_gateway_port.py的活跃依赖,勿误删) - 验证: cron所有脚本引用无缺失, key模块import正常 - hermes独有从116收敛到5核心(alert_logger/market_screener/prepare_report_data/self_todo_executor_v2/xmpp_zhiwei_bot)
31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
import json
|
|
from datetime import datetime, timezone, timedelta
|
|
|
|
d = json.load(open('/home/hmo/.hermes/profiles/position-analyst/cron/jobs.json'))
|
|
jobs = d if isinstance(d, list) else d.get('jobs', [])
|
|
now = datetime.now(timezone.utc)
|
|
print(f"{'name':32} {'last_run':20} {'status':8} {'next_run':20} {'en'}")
|
|
print('-' * 95)
|
|
for j in sorted(jobs, key=lambda x: x.get('last_run_at') or ''):
|
|
if not j.get('enabled', True):
|
|
continue
|
|
lr = (j.get('last_run_at') or '?')[:19]
|
|
nr = (j.get('next_run_at') or '?')[:19]
|
|
st = str(j.get('last_status', '?'))
|
|
print(f"{j.get('name','?')[:32]:32} {lr:20} {st:8} {nr:20} {j.get('enabled')}")
|
|
|
|
# also check gateway-side cron (default profile)
|
|
print()
|
|
print('=== default profile cron ===')
|
|
try:
|
|
d2 = json.load(open('/home/hmo/.hermes/cron/jobs.json'))
|
|
jobs2 = d2 if isinstance(d2, list) else d2.get('jobs', [])
|
|
for j in sorted(jobs2, key=lambda x: x.get('last_run_at') or ''):
|
|
if not j.get('enabled', True):
|
|
continue
|
|
lr = (j.get('last_run_at') or '?')[:19]
|
|
nr = (j.get('next_run_at') or '?')[:19]
|
|
st = str(j.get('last_status', '?'))
|
|
print(f"{j.get('name','?')[:32]:32} {lr:20} {st:8} {nr:20} {j.get('enabled')}")
|
|
except Exception as e:
|
|
print('err:', e) |