115 lines
4.5 KiB
Bash
115 lines
4.5 KiB
Bash
#!/bin/bash
|
|
echo "=========================================="
|
|
echo " 追光AI 定时任务 + Bot 运行巡检"
|
|
echo " $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
echo "=== 1) PM2 进程状态 ==="
|
|
pm2 list 2>&1 | head -30
|
|
echo ""
|
|
|
|
echo "=== 2) 本项目 crontab 任务(按时间排) ==="
|
|
crontab -l 2>/dev/null
|
|
echo ""
|
|
|
|
echo "=== 3) 本项目最近 5 次 PM2 重启事件 ==="
|
|
pm2 show zhuiguang-ai 2>&1 | grep -E "restarts|unstable|uptime|created at|status" | head -10
|
|
echo ""
|
|
|
|
echo "=== 4) 各定时任务最近 5 条日志 ==="
|
|
cd /home/ubuntu/zhuiguang-ai/logs 2>/dev/null
|
|
for f in task1.log task3.log task4.log task5.log task6.log task7.log daily-news.log bot-activity.log; do
|
|
if [ -f "$f" ]; then
|
|
sz=$(du -h "$f" | cut -f1)
|
|
lines=$(wc -l < "$f")
|
|
last_mod=$(stat -c '%y' "$f" 2>/dev/null | cut -d. -f1)
|
|
last_line=$(tail -1 "$f" 2>/dev/null)
|
|
echo " [${f}] size=${sz} lines=${lines} mtime=${last_mod}"
|
|
echo " tail: ${last_line:0:150}"
|
|
else
|
|
echo " [${f}] MISSING"
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
echo "=== 5) Bot 相关脚本最近 3 条日志 ==="
|
|
for f in bot-activity.log bot-feedback-loop.log bot-weekly-review.log bot-skill-crystallize.log bot-affinity-update.log bot-adversarial-learning.log bot-persona-experiment.log; do
|
|
if [ -f "$f" ]; then
|
|
last_line=$(tail -1 "$f" 2>/dev/null)
|
|
last_mod=$(stat -c '%y' "$f" 2>/dev/null | cut -d. -f1)
|
|
echo " [${f}] mtime=${last_mod}"
|
|
echo " tail: ${last_line:0:150}"
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
echo "=== 6) 24h 内任务失败 / ERROR 关键字扫描 ==="
|
|
for f in *.log; do
|
|
[ -f "$f" ] || continue
|
|
err=$(grep -iE 'error|失败|fatal|exception|exit code [^0]|❌|❌' "$f" 2>/dev/null | tail -3)
|
|
if [ -n "$err" ]; then
|
|
echo " --- ${f} ---"
|
|
echo "$err" | sed 's/^/ /'
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
echo "=== 7) 数据库里的 Bot 现状 ==="
|
|
mysql -h rm-0jlbgr2rv6dj3t6jngo.mysql.rds.aliyuncs.com -u mohe001 -pmohe001 zhuiguang_ai -e "
|
|
SELECT
|
|
(SELECT COUNT(*) FROM User WHERE isBot = 1) AS bot_users,
|
|
(SELECT COUNT(*) FROM BotConfig) AS bot_configs,
|
|
(SELECT COUNT(*) FROM BotConfig WHERE isActive = 1) AS active_bots,
|
|
(SELECT COUNT(*) FROM ForumTopic WHERE createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS topics_7d,
|
|
(SELECT COUNT(*) FROM ForumPost WHERE createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS posts_7d,
|
|
(SELECT COUNT(*) FROM ForumTopic t JOIN User u ON t.authorId = u.id WHERE u.isBot = 1 AND t.createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS bot_topics_7d,
|
|
(SELECT COUNT(*) FROM ForumPost p JOIN User u ON p.authorId = u.id WHERE u.isBot = 1 AND p.createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS bot_posts_7d,
|
|
(SELECT COUNT(*) FROM BotAdversarialLearning) AS adv_learnings,
|
|
(SELECT COUNT(*) FROM BotAdversarialLearning WHERE status = 'active') AS active_learnings,
|
|
(SELECT COUNT(*) FROM BotPersonaVariant) AS persona_variants,
|
|
(SELECT COUNT(*) FROM BotPersonaExperiment) AS experiments;
|
|
" 2>&1 | grep -v "Warning"
|
|
echo ""
|
|
|
|
echo "=== 8) 最近 24h 论坛板块活跃度(按板块) ==="
|
|
mysql -h rm-0jlbgr2rv6dj3t6jngo.mysql.rds.aliyuncs.com -u mohe001 -pmohe001 zhuiguang_ai -e "
|
|
SELECT
|
|
c.name AS 板块,
|
|
c.slug AS slug,
|
|
(SELECT COUNT(*) FROM ForumTopic t WHERE t.categoryId = c.id AND t.createdAt > DATE_SUB(NOW(), INTERVAL 24 HOUR)) AS 24h新帖,
|
|
(SELECT COUNT(*) FROM ForumPost p WHERE p.topicId IN (SELECT id FROM ForumTopic WHERE categoryId = c.id) AND p.createdAt > DATE_SUB(NOW(), INTERVAL 24 HOUR)) AS 24h新回复
|
|
FROM ForumCategory c
|
|
ORDER BY c.id;
|
|
" 2>&1 | grep -v "Warning"
|
|
echo ""
|
|
|
|
echo "=== 9) 最近 7 天发 Bot 帖前 10 名 ==="
|
|
mysql -h rm-0jlbgr2rv6dj3t6jngo.mysql.rds.aliyuncs.com -u mohe001 -pmohe001 zhuiguang_ai -e "
|
|
SELECT
|
|
u.name AS bot,
|
|
COUNT(DISTINCT t.id) AS 发帖数,
|
|
COUNT(DISTINCT p.id) AS 回复数,
|
|
COALESCE(SUM(t.likeCount), 0) AS 获赞,
|
|
COALESCE(SUM(t.viewCount), 0) AS 浏览
|
|
FROM User u
|
|
LEFT JOIN ForumTopic t ON t.authorId = u.id AND t.createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)
|
|
LEFT JOIN ForumPost p ON p.authorId = u.id AND p.createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)
|
|
WHERE u.isBot = 1
|
|
GROUP BY u.id, u.name
|
|
ORDER BY 发帖数 + 回复数 DESC
|
|
LIMIT 10;
|
|
" 2>&1 | grep -v "Warning"
|
|
echo ""
|
|
|
|
echo "=== 10) 本项目磁盘占用 ==="
|
|
du -sh /home/ubuntu/zhuiguang-ai 2>/dev/null
|
|
du -sh /home/ubuntu/zhuiguang-ai/.next 2>/dev/null
|
|
du -sh /home/ubuntu/zhuiguang-ai/node_modules 2>/dev/null
|
|
du -sh /home/ubuntu/zhuiguang-ai/logs 2>/dev/null
|
|
echo ""
|
|
|
|
echo "=========================================="
|
|
echo " 巡检完成"
|
|
echo "=========================================="
|