弃用apscheduler改用系统定时器cron
我有一组python程序是每天定时执行的周期性任务,采用的是轻量级第三方定时器apscheduler,设置周期性任务很方便,但存在一个个未知的bug,每天早上6:15采集的数据,采集的结果总是以最初运行那天(首次执行任务)的日期来采集,经检查发现,每天执行时会新增线程,执行完毕后,线程不会释放,估计是多线程引起内存混乱。一时想不到解决办法,只好变通,改用linux系统定时器cron。
基本思路:在不改变python程序的情况下,每天22:00由cron自动执行脚本IOTrestart.sh,该脚本先杀掉两个python进程,然后再后台运行这两个python程序。
环境:ubuntu18.04
工具:vscode
第一步 vscode编写待执行脚本
第二步 设置cron
vscode连接ubuntu18.04,在终端键入 `crontab -e`
![每天22:00执行任务](https://img-blog.csdnimg.cn/20210415220614143.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzQyNTU2MQ==,size_16,color_FFFFFF,t_70)
注意要写全路径,不然cron找不到路径就不会执行。写好后,:wq保存退出。
第三步 用syslog观察cron是否有执行
用vscode打开syslog
/var/log/syslog