run_script.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/bin/bash
  2. # 超星数据同步脚本启动器
  3. # 用于crontab定时任务执行
  4. # 获取脚本所在目录的绝对路径
  5. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  6. cd "$SCRIPT_DIR" || exit 1
  7. # Python解释器路径(根据实际情况修改)
  8. # 如果使用虚拟环境,请修改为虚拟环境的Python路径
  9. PYTHON_CMD="python3"
  10. # 日志目录
  11. LOG_DIR="$SCRIPT_DIR/logs"
  12. mkdir -p "$LOG_DIR"
  13. # 获取脚本名称(不含路径和扩展名)
  14. SCRIPT_NAME="$1"
  15. if [ -z "$SCRIPT_NAME" ]; then
  16. echo "错误: 未指定脚本名称"
  17. exit 1
  18. fi
  19. # 日志文件(按日期和脚本名)
  20. LOG_FILE="$LOG_DIR/${SCRIPT_NAME}_$(date +%Y%m%d).log"
  21. ERROR_LOG="$LOG_DIR/${SCRIPT_NAME}_error_$(date +%Y%m%d).log"
  22. # 执行Python脚本
  23. echo "==========================================" >> "$LOG_FILE"
  24. echo "执行时间: $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE"
  25. echo "脚本: $SCRIPT_NAME.py" >> "$LOG_FILE"
  26. echo "==========================================" >> "$LOG_FILE"
  27. # 执行脚本,同时输出到标准日志和错误日志
  28. $PYTHON_CMD "$SCRIPT_DIR/$SCRIPT_NAME.py" >> "$LOG_FILE" 2>> "$ERROR_LOG"
  29. # 检查执行结果
  30. EXIT_CODE=$?
  31. if [ $EXIT_CODE -eq 0 ]; then
  32. echo "执行成功: $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE"
  33. else
  34. echo "执行失败 (退出码: $EXIT_CODE): $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE"
  35. echo "错误详情请查看: $ERROR_LOG" >> "$LOG_FILE"
  36. fi
  37. echo "" >> "$LOG_FILE"
  38. exit $EXIT_CODE