linux python脚本定时运行_Linux Crontab定时运行python程序

背景:工作需要,凌晨定时运行一次py脚本。linux上可以直接使用crontab进行定时任务。

1、Crond命令详解

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似

其中:

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件

举个栗子:

#每天11.30运行脚本

30 11 * * * /home/aaa/test_main.sh

#每隔1分钟就运行一次脚本

*/1 * * * * /home/aaa/test_main.sh

#执行Python脚本

30 0 * * * /home/upload/anaconda3/bin/python /home/upload/py/test.py

2、Crond状态

首先参看 crond 状态

service crond status

如果关闭的话,就将其启动或者重启

服务操作说明

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

/sbin/service crond status //启动服务

常用方法

crontab -l #查看现有的所有 crontab 任务

crontab -e #添加或修改 crontab 任务(类似与vim)

3、Crond常见错误

Ⅰ、查看反馈

我在添加任务后,反馈 You have new mail in /var/spool/mail/upload。

这是相当于Crond的日志,如果脚本没有正常运行的话,可以去直接查看日志。

Ⅱ、python相对路径报错

遇到一个很诡异的事情:直接执行python脚本或把它放到shell脚本执行没啥问题,一放到crontab里执行就无反应。

解决办法:

crontab里执行时,直接把高版本python的全路径写上去,比如:

0 * * * * /usr/local/python3.6/bin/python home/community/test.py

运行crontab定时作业里边的东西,都要写绝对路径,python环境最好也写绝对路径

Ⅲ、脚本其他报错

直接运行 python test.py无问题,添加绝对路径到crontab里运行无反应。

打开 /var/spool/mail/upload 发现报错

SyntaxError: Non-ASCII character '\xe5' in file ex16.py on line 1,

ng declared; see http://python.org/dev/peps/pep-0263/ for details

解决办法:

在文件头部添加这一句即可 # -- coding: utf-8 -

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值