108 lines
3.8 KiB
Bash
108 lines
3.8 KiB
Bash
|
|
#!/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
|