modify scripts
This commit is contained in:
6
cron/cmd.md
Normal file
6
cron/cmd.md
Normal file
@ -0,0 +1,6 @@
|
||||
# 拉取 研报
|
||||
```Bash
|
||||
cd /root/projects/stock/
|
||||
export DB_ENV=nas && python3 -m src.em_reports.fetch --begin=2025-12-06 --end=2025-12-15 --mode=fetch
|
||||
export DB_ENV=nas && python3 -m src.em_reports.fetch --begin=2025-12-06 --end=2025-12-15 --mode=down
|
||||
```
|
||||
112
cron/em_reports.sh
Normal file
112
cron/em_reports.sh
Normal file
@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail # 严格模式:错误立即退出,未定义变量报错,管道失败触发退出
|
||||
|
||||
# -------------------------- 颜色常量(美化输出) --------------------------
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # 重置颜色
|
||||
|
||||
# -------------------------- 核心配置(可按需修改) --------------------------
|
||||
# 工作目录(执行Python脚本的目录)
|
||||
WORK_DIR="/root/projects/stock/"
|
||||
# 日期配置文件路径(读取默认begin日期)
|
||||
DATE_FILE="./cron/reports_curr.txt"
|
||||
# DB环境变量值
|
||||
DB_ENV="nas"
|
||||
# Python脚本模块路径
|
||||
PY_MODULE="src.em_reports.fetch"
|
||||
|
||||
# -------------------------- 日期处理工具函数 --------------------------
|
||||
# 验证日期格式是否为 YYYY-MM-DD
|
||||
validate_date() {
|
||||
local date_str="$1"
|
||||
# 使用date命令验证,无效则返回非0
|
||||
if date -d "$date_str" "+%Y-%m-%d" >/dev/null 2>&1; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 计算日期差值(如 end_date - N天),输出 YYYY-MM-DD 格式
|
||||
calc_date_diff() {
|
||||
local base_date="$1"
|
||||
local days="$2"
|
||||
date -d "$base_date - $days days" "+%Y-%m-%d"
|
||||
}
|
||||
|
||||
# -------------------------- 主逻辑:确定begin/end日期 --------------------------
|
||||
# Step 1: 设置end日期(固定为当前日期)
|
||||
END_DATE=$(date "+%Y-%m-%d")
|
||||
echo -e "${BLUE}📅 自动获取end日期:$END_DATE${NC}"
|
||||
|
||||
# Step 2: 处理begin日期(优先级:命令行参数 > u3c3.txt > end-7天)
|
||||
BEGIN_DATE=""
|
||||
# 检查是否传入命令行参数(第一个参数)
|
||||
if [[ $# -ge 1 && -n "$1" ]]; then
|
||||
if validate_date "$1"; then
|
||||
BEGIN_DATE="$1"
|
||||
echo -e "${GREEN}✅ 从命令行获取begin日期:$BEGIN_DATE${NC}"
|
||||
else
|
||||
echo -e "${RED}❌ 命令行传入的日期 '$1' 格式无效(需为YYYY-MM-DD),尝试读取配置文件...${NC}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Step 3: 若命令行参数无效/未传入,读取u3c3.txt
|
||||
if [[ -z "$BEGIN_DATE" ]]; then
|
||||
if [[ -f "$DATE_FILE" ]]; then
|
||||
# 读取文件内容(去除空白字符/换行)
|
||||
FILE_DATE=$(cat "$DATE_FILE" | tr -d ' \n\r\t')
|
||||
if validate_date "$FILE_DATE"; then
|
||||
BEGIN_DATE="$FILE_DATE"
|
||||
echo -e "${GREEN}✅ 从$DATE_FILE读取begin日期:$BEGIN_DATE${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ $DATE_FILE中的日期 '$FILE_DATE' 格式无效,使用默认值...${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 未找到$DATE_FILE文件,使用默认值...${NC}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Step 4: 若以上都无,使用end-7天作为默认值
|
||||
if [[ -z "$BEGIN_DATE" ]]; then
|
||||
BEGIN_DATE=$(calc_date_diff "$END_DATE" 7)
|
||||
echo -e "${GREEN}✅ 使用默认begin日期(end-7天):$BEGIN_DATE${NC}"
|
||||
fi
|
||||
|
||||
# -------------------------- 执行Python脚本 --------------------------
|
||||
echo -e "\n${BLUE}🚀 开始执行em_reports脚本...${NC}"
|
||||
echo -e "🔍 执行参数:begin=$BEGIN_DATE, end=$END_DATE${NC}"
|
||||
echo -e "=====================================${NC}"
|
||||
|
||||
# 进入工作目录
|
||||
cd "$WORK_DIR" || {
|
||||
echo -e "${RED}❌ 进入工作目录失败:$WORK_DIR${NC}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 执行第一个命令:mode=fetch
|
||||
echo -e "\n${BLUE}👉 执行模式:fetch${NC}"
|
||||
export DB_ENV="$DB_ENV" && python3 -m "$PY_MODULE" --begin="$BEGIN_DATE" --end="$END_DATE" --mode=fetch
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo -e "${RED}❌ mode=fetch 执行失败!终止脚本${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}✅ mode=fetch 执行成功${NC}"
|
||||
|
||||
# 执行第二个命令:mode=down
|
||||
echo -e "\n${BLUE}👉 执行模式:down${NC}"
|
||||
export DB_ENV="$DB_ENV" && python3 -m "$PY_MODULE" --begin="$BEGIN_DATE" --end="$END_DATE" --mode=down
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo -e "${RED}❌ mode=down 执行失败!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}✅ mode=down 执行成功${NC}"
|
||||
|
||||
# -------------------------- 执行完成处理 --------------------------
|
||||
echo -e "\n${GREEN}🎉 所有脚本执行完成!${NC}"
|
||||
# 可选:将本次begin日期写入u3c3.txt,供下次复用
|
||||
echo "$BEGIN_DATE" > "$DATE_FILE"
|
||||
echo -e "${GREEN}✅ 已将begin日期 $BEGIN_DATE 写入$DATE_FILE${NC}"
|
||||
Reference in New Issue
Block a user