python crontab设置linux定时任务

熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务。可以通过命令crontab -e编写任务。当然也可以直接写配置文件设置任务。

但是有时候希望通过脚本自动设置,比如我们应用程序部署时等。有需求当然就得想办法解决,不然在程序猿界混(一群自得其乐的猿)。

下面进入正题,开始想通过以写文件的形式设置,通过在配置文件中直接追加一行即可。但是读写文件难免有点繁琐,再比如:设置任务时要检查任务是否已经存在;根据输入参数设置相应的任务等。以读写文件难免不太合适。所以想到了“万能”的大python。

当当当,今天的主角上场:python-crontab模块。安装直接

pip install python-crontab

下面在脚本上就可以方便的设置计划任务了

复制代码
from crontab import CronTab

# 创建linux系统当前用户的crontab,当然也可以创建其他用户的,但得有足够权限,如:user='root'
my_user_cron = CronTab(user=True)

# 创建任务 指明运行python脚本的命令(crontab的默认执行路径为:当前用户的根路径, 因此需要指定绝对路径)
job = my_user_cron.new(
from crontab import CronTab

# 创建linux系统当前用户的crontab,当然也可以创建其他用户的,但得有足够权限,如:user='root'
my_user_cron = CronTab(user=True)

# 创建任务 指明运行python脚本的命令(crontab的默认执行路径为:当前用户的根路径, 因此需要指定绝对路径)
# 命令最好都写绝对路径,脚本的用户变量和系统变量是不一样的,不一定你能招到那个命令,比如书哟这个python3
job = my_user_cron.new(
    command='/usr/local/python3/bin/python3 /root/data_test.py >> /root/data_result.log 2>&1 &')

# 设置任务执行周期,每两分钟执行一次(更多方式请稍后参见参考链接)
job.setall('*/1 * * * *')

# 将crontab写入linux系统配置文件
my_user_cron.write()

# 设置任务执行周期,每两分钟执行一次(更多方式请稍后参见参考链接)
job.setall('*/1 * * * *')

# 将crontab写入linux系统配置文件
my_user_cron.write()
复制代码

 

 

还有一些其他的参数和配置

复制代码
job.minute.during(5,50).every(5)
 
job.hour.every(4)
 
job.day.on(4, 5, 6)
 
job.dow.on('SUN')
 
job.dow.on('SUN', 'FRI')
 
job.month.during('APR', 'NOV')
 
job.setall(time(10, 2))
 
job.setall(date(2000, 4, 2))
 
job.setall(datetime(2000, 4, 2, 10, 2))
 
# 同时可以给任务设置comment,这样就可以根据comment查询,很方便
 
job.set_comment("time log job")
 
# 根据comment查询,当时返回值是一个生成器对象,不能直接根据返回值判断任务是否#存在,如果只是判断任务是否存在,可直接遍历my_user_cron.crons
 
iter = my_user_cron.find_comment('time log job')
 
# 同时还支持根据command和执行周期查找,基本类似,不再列举
 
# 任务的disable和enable, 默认enable
 
job.enable(False)
 
job.enable()
复制代码

 

 

posted @   阿布_alone  阅读(1521)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
历史上的今天:
2019-04-16 新浪新闻全站
2019-04-16 linux下安装软件的方法(mariadb)
2019-04-16 linux下安装使用虚拟环境
TOP
点击右上角即可分享
微信分享提示