从阿里云往公司内的服务器上导数据,白天是不能导的,所以挑夜里导数据。
不用 corntab 的原因是不知道能导多少数据需要多少时间,不好进行估计。
目前部分代码如下:- for i in `seq -w -s ' ' 00 15`
- do
- for j in `seq -w -s ' ' 00 29`
- do
- if [[ ${LOCAL_HOURS} -lt 7 ]] || [[ ${LOCAL_HOURS} -gt 22 ]];then
- echo "WORKING...${i}.${j}"
- # DB_NAME=trace_db_${i}
- # TABLE_NAME=trace_table_${j}
- # mysql -h${DB_ADDR} -u${DB_USER} -p${DB_PASS} -e "SELECT * FROM ${DB_NAME}.${TABLE_NAME} WHERE Time between '${START_TIME} AND '${END_TIME}' AND RecvTime < '${END_TIME}';" > ${SAVE_PATH}/${DB_NAME}/${TABLE_NAME}.csv
- else
- echo "NOT IN WORK TIME! ${i}.${j}"
- sleep 10
- fi
- done
- done
复制代码 但是这段代码执行有问题,如果当前时间在 7:00~22:00 之间,那么 for 循环会开始下一次计数,当前所需的数据表就被跳过,导不出来了。
有没有什么方式可以在这段时间内 sleep 一段时间以后再检测当前时间,如果时间不在 7:00~22:00 ,再重新以当前 ${j} 的值进行循环呢?
先谢谢各位大佬了。 |