novel-doomsday-resurgence/inkos_status_report.sh

108 lines
3.8 KiB
Bash
Raw Normal View History

#!/bin/bash
# inkos 状态报告脚本
# 直接通过命令检查状态,生成报告
PROJECT_DIR="/root/.openclaw/workspace/tomato-novel"
REPORT_FILE="/tmp/inkos-status-report.txt"
# 生成报告
generate_report() {
echo "# 🦠 inkos 状态报告 $(date '+%Y-%m-%d %H:%M:%S')" > "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
# 1. 检查守护进程
echo "## 🔄 进程状态" >> "$REPORT_FILE"
if pgrep -f "inkos up" > /dev/null; then
DAEMON_PID=$(pgrep -f "inkos up")
echo "✅ **inkos 守护进程运行中**" >> "$REPORT_FILE"
echo " PID: $DAEMON_PID" >> "$REPORT_FILE"
else
echo "❌ **inkos 守护进程已停止**" >> "$REPORT_FILE"
fi
echo "" >> "$REPORT_FILE"
# 2. 检查项目状态
echo "## 📚 项目状态" >> "$REPORT_FILE"
if [ -d "$PROJECT_DIR" ]; then
cd "$PROJECT_DIR"
# 书籍列表
BOOK_LIST=$(inkos book list 2>/dev/null || echo "无法获取书籍列表")
echo "📖 **书籍**: $BOOK_LIST" >> "$REPORT_FILE"
# 章节统计
CHAPTER_COUNT=$(find books -name "*.md" -path "*/chapters/*" 2>/dev/null | wc -l)
echo "📄 **章节数量**: $CHAPTER_COUNT" >> "$REPORT_FILE"
# 显示章节详情
if [ $CHAPTER_COUNT -gt 0 ]; then
echo "" >> "$REPORT_FILE"
echo "### 章节详情:" >> "$REPORT_FILE"
find books -name "*.md" -path "*/chapters/*" 2>/dev/null | sort | while read chapter; do
CHAPTER_NAME=$(basename "$chapter" .md)
FILE_SIZE=$(stat -c%s "$chapter" 2>/dev/null)
WORD_EST=$((FILE_SIZE / 3)) # 估算字数
echo " - $CHAPTER_NAME (约 ${WORD_EST}字)" >> "$REPORT_FILE"
done
fi
# 检查最近修改时间
echo "" >> "$REPORT_FILE"
LATEST_CHAPTER=$(find books -name "*.md" -path "*/chapters/*" -printf "%T@ %p\n" 2>/dev/null | sort -nr | head -1 | cut -d' ' -f2-)
if [ -n "$LATEST_CHAPTER" ]; then
LATEST_TIME=$(stat -c "%y" "$LATEST_CHAPTER" 2>/dev/null | cut -d'.' -f1)
echo "⏰ **最近更新**: $LATEST_TIME" >> "$REPORT_FILE"
fi
else
echo "❌ **项目目录不存在**: $PROJECT_DIR" >> "$REPORT_FILE"
fi
echo "" >> "$REPORT_FILE"
# 3. 检查日志
echo "## 📝 系统日志" >> "$REPORT_FILE"
if [ -f "/tmp/inkos-daemon.log" ]; then
LOG_LINES=$(tail -3 "/tmp/inkos-daemon.log" 2>/dev/null)
if [ -n "$LOG_LINES" ]; then
echo "$LOG_LINES" >> "$REPORT_FILE"
else
echo "无最近日志" >> "$REPORT_FILE"
fi
else
echo "日志文件不存在" >> "$REPORT_FILE"
fi
echo "" >> "$REPORT_FILE"
# 4. 系统状态
echo "## 🖥️ 系统状态" >> "$REPORT_FILE"
echo "⏱️ 时间: $(date '+%Y-%m-%d %H:%M:%S %Z')" >> "$REPORT_FILE"
echo "🏠 项目目录: $PROJECT_DIR" >> "$REPORT_FILE"
echo "📅 监控开始时间: $(date '+%Y-%m-%d %H:%M:%S')" >> "$REPORT_FILE"
# 5. 建议
echo "" >> "$REPORT_FILE"
echo "## 💡 建议" >> "$REPORT_FILE"
if pgrep -f "inkos up" > /dev/null; then
echo "✅ 系统运行正常inkos 正在自动写作" >> "$REPORT_FILE"
else
echo "⚠️ inkos 守护进程已停止,建议重启" >> "$REPORT_FILE"
echo " 运行: cd $PROJECT_DIR && nohup inkos up > /tmp/inkos-daemon.log 2>&1 &" >> "$REPORT_FILE"
fi
}
# 主函数
main() {
echo "正在生成 inkos 状态报告..."
generate_report
# 显示报告
cat "$REPORT_FILE"
# 通过飞书发送报告
echo ""
echo "报告已保存到: $REPORT_FILE"
echo "可以通过飞书发送此报告"
}
# 执行
main