思路
➡️终端通过crontab命令定时执行sh脚本
➡️sh脚本执行py脚本,sh的执行日志记入log
➡️py脚本的执行日志记入log
具体步骤
- 编写py脚本,设置执行日志写入log
import logging
# 函数定义
def get_data(date,id):
logging.info(f'开始执行')
#生成dataframe等
...
# 结果写入log文件
logging.info(f'result_df, 输出结果{result_df}')
logging.info(f'执行完成')
# 主函数
if __name__ == "__main__":
# 接收来自sh的参数
date = sys.argv[1]
id = sys.argv[2]
# 函数调用
get_data(date,id)
- shell脚本调用py脚本(传递py需要的参数)
#!/bin/bash
# 获取参数
DATE=$1
ID=$2
# 切换目录(如有需要)
cd /path/to/your/script
# 日志路径(可选)
LOG_FILE="./run.log"
# 写入日志
echo "开始执行任务,时间: $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE"
echo "参数 DATE=$DATE, ID=$CID" >> "$LOG_FILE"
# 执行 Python 脚本
python run_task.py "$DATE" "$ID" >> "$LOG_FILE" 2>&1
echo "任务完成时间: $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE"
echo "-------------------------------" >> "$LOG_FILE"
- 终端定时执行shell脚本
(1) 设置定时任务:
打开终端:command+空格-进入terminal
输入:crontab -e
按i键,进入编辑状态,
输入定时任务:30 12 * * * /bin/bash /path/xxx.sh >> /path/xxx.log 2>&1
按Esc键(退出编辑模式)
输入:wq,按enter回车保存退出
(2) 输入命令,查看定时任务是否设置成功:crontab -l
(3) 删除定时任务:
先查看 crontab -e
然后按下 dd(在 vim 中)或手动删除整行(在 nano 中)
(4) 保存并退出:
如果是 vim:按 Esc,输入 :wq 回车
如果是 nano:按 Ctrl + O 保存,回车;再按 Ctrl + X 退出