linux crontab 设置定时任务错误排查记录

背景

我用Python 写了一个自动获取数据库里的数据,然后将数据通过邮件发送,程序在本地是可以正常运行的,但是放在服务器上,一直不能正常发送邮件,经过排查后发现了好几处问题,现在都已经解决,先把排查的过程记录下:

自己定时任务设置的流程

  1. 将自己本地的代码打包上传到服务器上
  2. 新建sh文件,用来运行py文件
python3 /u1/ships_pass/auto_mail.py

3.新增定时列表中的任务
命令:crontab -e

0 9 * * mon sh /u1/ships_pass/auto_mail.sh

这里的地址最好写绝对地址

新增一个定时任务,我这里设置的是每周一上午9点自动运行,这部分的设置可以根据自己的需要进行更改
简单说明任务设置中,0 9 * * mon的含义:
第一位数字表示分钟
第二位表示小时,9表示9点执行
第三位表示日期,* 表示每天都执行
第四位表示月,*表示每个月都执行
第五位表示星期,mon表示每个周一,星期和第三位的日期不能同时设置。

正常情况下运行的顺序就是先执行cron中的定时任务,然后执行.sh文件,最后执行.py文件

了解了执行顺序,按照执行顺序进行排查就好了。

1.检查代码是否可以正常运行

先尝试直接运行.py文件

Python example.py

如果代码需要在指定的环境里运行,则先切换到该环境,然后运行代码

conda activate my_env
#my_env 为自己的运行环境

第一步成功后,则进入第二步

2.检查.sh文件是否有问题

切换到.sh的文件夹,运行.sh文件。

sh /u1/ships_pass/auto_mail.sh

这里需要注意,如果是用虚拟环境运行的py文件,则在.sh 中需要添加一行,让脚本运行前,先切换到虚拟环境中。

source /root/anaconda3/bin/activate base
python3 /u1/ships_pass/auto_mail.py

其中,/root/anaconda3/bin/activate 表示anaconda 安装的地址,可以用whereis查看,要把地址中的最后的anaconda 换成activate

base 是自己要切换的环境。
在这里插入图片描述
.sh 执行没有问题后,进入3步

3.检查cron定时任务列表有没有问题

查看cron 设定的任务有没有问题,主要查看:
(1)时间设置的对不对
(2)列表里执行的sh 文件地址对不对

经过这3个步骤检查后,大概率是可以查找到问题的,经过几次的布置,发现大部分的问题都可以在前两个检查的步骤里被解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值